???习题3-10 UVa1587 Box
2015-11-13 21:39
295 查看
1.低端暴力枚举法
要点:
1.先判断6个长方形两两相等,然后将三个互异的长方形长和宽存入数组mark,再通过暴力枚举比较,任意两个长方形中必定有两个数相等
学习心得:
1.goto语句可直接跳出if等判断语句,到后面确定的位置上,可以稍微减少时间
goto语句通常与条件语句配合使用。可用来实现条件转移,构成循环,跳出循环体等功能。
但是,在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。
2.
要点:
1.牵涉到c++的运算符重载,暂时不会,下次有机会还是得学c++,比c还是要简单的
要点:
1.先判断6个长方形两两相等,然后将三个互异的长方形长和宽存入数组mark,再通过暴力枚举比较,任意两个长方形中必定有两个数相等
#include<stdio.h> int a[6][2]; int mark[6]; int main() { while (scanf("%d%d", &a[0][0], &a[0][1]) == 2) { //先输入开头的a[0]数组,这样可以保证连续输入 for (int i = 1; i < 6; i++) scanf("%d%d", &a[i][0], &a[i][1]); for (int i = 0; i < 6; i++) //先将长方形长宽排序 if (a[i][0]>a[i][1]) { int t = a[i][0]; a[i][0] = a[i][1]; a[i][1] = t; } int n = 0; for (int i = 0; i < 5; i++) { if (!a[i][0]) continue; //遇到0则为已经判断相等的 for (int j = i + 1; j < 6; j++) { if (!a[j][0]) continue; //遇到0则为已经判断相等的 if (a[i][0] == a[j][0] && a[i][1] == a[j][1]) { mark[n++] = a[i][0]; mark[n++] = a[i][1]; a[j][0] = 0; //将与前面一个相等的赋值为0 break; } } } if (n != 6) printf("IMPOSSIBLE\n"); else { if (mark[0] == mark[2]) { if ((mark[1] == mark[4] && mark[3] == mark[5]) || (mark[1] == mark[5] && mark[3] == mark[4])) { printf("POSSIBLE\n"); goto x1; } else printf("IMPOSSIBLE\n"); } else if (mark[0] == mark[3]) { if ((mark[1] == mark[4] && mark[2] == mark[5]) || (mark[1] == mark[5] && mark[2] == mark[4])) { printf("POSSIBLE\n"); goto x1; //跳出if判断语句直接到末尾,不用也毫无影响 } else printf("IMPOSSIBLE\n"); } else if (mark[1] == mark[2]) { if ((mark[0] == mark[4] && mark[3] == mark[5]) || (mark[0] == mark[5] && mark[3] == mark[4])) { printf("POSSIBLE\n"); goto x1; } else printf("IMPOSSIBLE\n"); } else if (mark[1] == mark[3]) { if ((mark[0] == mark[4] && mark[2] == mark[5]) || (mark[0] == mark[5] && mark[2] == mark[4])) { printf("POSSIBLE\n"); goto x1; } else printf("IMPOSSIBLE\n"); } else printf("IMPOSSIBLE\n"); } x1:; //直接跳到这 } return 0; }
学习心得:
1.goto语句可直接跳出if等判断语句,到后面确定的位置上,可以稍微减少时间
goto语句通常与条件语句配合使用。可用来实现条件转移,构成循环,跳出循环体等功能。
但是,在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。
2.
要点:
1.牵涉到c++的运算符重载,暂时不会,下次有机会还是得学c++,比c还是要简单的
#include <cstdio> #include <cstdlib> #include <iostream> using namespace std; struct NODE { int h, w; bool operator < (const NODE& rha) const{ if(h == rha.h) return w < rha.w; return h < rha.h; } }a[10]; bool ok() { if(a[0].h != a[1].h || a[0].w != a[1].w) return false; if(a[2].h != a[3].h || a[2].w != a[3].w) return false; if(a[4].h != a[5].h || a[4].w != a[5].w) return false; if(a[1].h != a[2].h) return false; if(a[1].w != a[4].h) return false; if(a[3].w != a[4].w) return false; return true; } int main() { while(scanf("%d%d", &a[0].h, &a[0].w) != EOF) { if(a[0].h > a[0].w) swap(a[0].h, a[0].w); for(int i = 1; i < 6; ++i) { scanf("%d%d", &a[i].h, &a[i].w); if(a[i].h > a[i].w) swap(a[i].h, a[i].w); } sort(a, a+6); if(ok()) puts("POSSIBLE"); else puts("IMPOSSIBLE"); } return 0; }
相关文章推荐
- ReactiveCocoa入门教程——第一部分
- hdu 5533 Dancing Stars on Me 【2015ACM/ICPC亚洲区长春站-重现赛(感谢东北师大)】
- #ifdef和#if defined之间的区别
- 第一篇博文:Web前端学习,从这里启航
- 二叉树的遍历 非递归操作
- 韩顺平Linux笔记(十四)——SSH安装、配置和使用
- IceGrid 应用配置手册
- HDFS shell 命令
- ubuntu上的sh链接到dash,如何重新设置到bash呢?
- Regular Expression Matching
- ARP和RARP属于哪层的协议?
- nyoj--61--传纸条(一)(动态规划)
- 杭电ACM1010
- 线段树应用
- Ubuntu下安装Reids
- nyoj--61--传纸条(一)(动态规划)
- 扑克程序 Python
- 张国祥老师应邀参加联创世纪系统的力量(成都)活动
- 【数据结构】顺序线性表的插入、删除、合并实现
- Robocup仿真3d——安装平台搭建