算法竞赛入门经典(第2版)习题4-4 骰子涂色 Cube painting UVa 253
2014-08-08 17:37
549 查看
这题用穷举法最合适,每种骰子至多有24种状态,读入数据穷举一下就行了。
1.为了提高效率,可以分别用特征数字100(b)/10(g)/1(r)来表示每个面的颜色,这样两个等价骰子的特征数字之和必然是相等的。如果不相等则直接输出'FALSE'
2.骰子可以沿着x/y/z三个方向旋转,如果两个特征数字相等的骰子对不上,那就旋转吧。
一次ac。
1.为了提高效率,可以分别用特征数字100(b)/10(g)/1(r)来表示每个面的颜色,这样两个等价骰子的特征数字之和必然是相等的。如果不相等则直接输出'FALSE'
2.骰子可以沿着x/y/z三个方向旋转,如果两个特征数字相等的骰子对不上,那就旋转吧。
一次ac。
//#define LOCAL //#define TESTING #include<stdio.h> #include<ctype.h> #include<string.h> char cube1[7],cube2[7],tempcube[7]; int sum1,sum2; int code(char color) { if(color == 'r') return 1; else if(color == 'g') return 10; else if(color == 'b') return 100; } int check() { for(int i = 1; i <= 6; i++) { if(tempcube[i]!=cube2[i]) return i; } return 0; } void rotatex() { char temps; temps = tempcube[1]; tempcube[1] = tempcube[2]; tempcube[2] = tempcube[6]; tempcube[6] = tempcube[5]; tempcube[5] = temps; } void rotatey() { char temps; temps = tempcube[2]; tempcube[2] = tempcube[3]; tempcube[3] = tempcube[5]; tempcube[5] = tempcube[4]; tempcube[4] = temps; } void rotatez() { char temps; temps = tempcube[1]; tempcube[1] = tempcube[3]; tempcube[3] = tempcube[6]; tempcube[6] = tempcube[4]; tempcube[4] = temps; } int main() { #ifdef LOCAL freopen("xt4-4.in","r",stdin); freopen("xt4-4.out","w",stdout); #endif char temp; while((temp = getchar())!=EOF) { memset(cube1,0,sizeof(cube1)); memset(cube2,0,sizeof(cube2)); sum1 = 0; sum2 = 0; while(!isalpha(temp)&&temp!=EOF) temp=getchar(); if(temp == EOF) break; cube1[1] = temp; sum1 += code(cube1[1]); for(int i = 2; i <= 6; i++) { cube1[i] = getchar(); sum1 += code(cube1[i]); } for(int i = 1; i <= 6; i++) { cube2[i] = getchar(); sum2 += code(cube2[i]); } #ifdef TESTING for(int i = 1; i <= 6; i++) printf("%c",cube1[i]); printf("\nsum1 = %d\n",sum1); for(int i = 1; i <= 6; i++) printf("%c",cube2[i]); printf("\nsum2 = %d\n",sum2); #endif if(sum1 != sum2) { printf("FALSE\n"); continue; } for(int i = 1; i <= 6; i++) tempcube[i] = cube1[i]; int result = check(); if(!result) {printf("TRUE\n");continue;} else {rotatey();result = check();} if(!result) {printf("TRUE\n");continue;} else {rotatey();result = check();} if(!result) {printf("TRUE\n");continue;} else {rotatey();result = check();} if(!result) {printf("TRUE\n");continue;} else rotatey(); rotatex(); result = check(); if(!result) {printf("TRUE\n");continue;} else {rotatey();result = check();} if(!result) {printf("TRUE\n");continue;} else {rotatey();result = check();} if(!result) {printf("TRUE\n");continue;} else {rotatey();result = check();} if(!result) {printf("TRUE\n");continue;} else rotatey(); rotatex(); result = check(); if(!result) {printf("TRUE\n");continue;} else {rotatey();result = check();} if(!result) {printf("TRUE\n");continue;} else {rotatey();result = check();} if(!result) {printf("TRUE\n");continue;} else {rotatey();result = check();} if(!result) {printf("TRUE\n");continue;} else rotatey(); rotatex(); result = check(); if(!result) {printf("TRUE\n");continue;} else {rotatey();result = check();} if(!result) {printf("TRUE\n");continue;} else {rotatey();result = check();} if(!result) {printf("TRUE\n");continue;} else {rotatey();result = check();} if(!result) {printf("TRUE\n");continue;} else rotatey(); rotatez(); result = check(); if(!result) {printf("TRUE\n");continue;} else {rotatey();result = check();} if(!result) {printf("TRUE\n");continue;} else {rotatey();result = check();} if(!result) {printf("TRUE\n");continue;} else {rotatey();result = check();} if(!result) {printf("TRUE\n");continue;} else rotatey(); rotatez(); rotatez(); result = check(); if(!result) {printf("TRUE\n");continue;} else {rotatey();result = check();} if(!result) {printf("TRUE\n");continue;} else {rotatey();result = check();} if(!result) {printf("TRUE\n");continue;} else {rotatey();result = check();} if(!result) {printf("TRUE\n");continue;} else {printf("FALSE\n");continue;} } return 0; }
相关文章推荐
- 算法竞赛入门经典(第2版)习题4-4 骰子涂色 Uva253
- 算法竞赛入门经典(第2版)习题4-4 骰子涂色UVa253
- 习题4-4 骰子涂色 UVa253
- 习题4-4 骰子涂色 UVa253
- 习题 4-4 骰子涂色(Cubepainting,UVa 253)
- 习题4-4 uva253骰子涂色简单题解(更新至简洁21行)
- 算法竞赛入门经典第四章习题4-4 Cube painting UVA - 253
- 算法竞赛入门经典(第2版)习题3-1 得分 Score UVa1585
- UVA-253-骰子涂色
- UVa253骰子涂色
- 算法竞赛入门经典(第2版)习题4-10 洪水!UVa815
- 算法竞赛入门经典(第2版)习题3-5 谜题(Puzzle) Uva227
- UVa 253 Cube painting(骰子涂色)
- 算法竞赛入门经典(第2版)习题5-6 对称轴(Symmetry) Uva1595
- 算法竞赛入门经典(第2版)习题3-8 循环小数 Repeating Decimals UVa202
- 算法竞赛入门经典(第2版)习题5-5 复合词 UVa10391
- UVA - 253 Cube painting(骰子涂色)
- Cube painting UVA - 253
- UVa 253 Cube painting (骰子涂色)
- 算法竞赛入门经典(第2版)习题4-10 洪水! Flooded! UVa815