算法竞赛入门经典(第2版)习题4-4 骰子涂色 Cube painting UVa 253
来源:互联网 发布:mac能玩什么游戏 编辑:程序博客网 时间:2024/05/17 04:08
这题用穷举法最合适,每种骰子至多有24种状态,读入数据穷举一下就行了。
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;}
0 0
- 算法竞赛入门经典(第2版)习题4-4 骰子涂色 Cube painting UVa 253
- 算法竞赛入门经典 第二版 习题4-4 骰子涂色 Cube painting uva253
- 算法竞赛入门经典(第2版)习题4-4 骰子涂色UVa253
- 算法竞赛入门经典(第2版)习题4-4 骰子涂色 Uva253
- UVa 253 Cube painting(骰子涂色)
- UVa 253 Cube painting (骰子涂色)
- [刷题]算法竞赛入门经典(第2版) 4-4/UVa253 - Cube painting
- UVA - 253 Cube painting(骰子涂色)
- 骰子涂色(Cube painting)
- 习题 4-4 骰子涂色(Cubepainting,UVa 253)
- UVA 253 - Cube painting(立方体涂色)
- 算法竞赛入门经典 UVa253 Cube painting
- 算法竞赛入门经典(第2版)习题4-6 莫尔斯电码 Morse Mismatches UVa 508
- UVa253--Cube painting--骰子涂色--重在算法思想
- 算法竞赛入门经典(第2版)习题4-2 正方形 Squares UVa201
- 算法竞赛入门经典(第2版)习题4-2 正方形UVa201
- 算法竞赛入门经典(第2版)习题2-4
- 算法竞赛入门经典(第2版)习题3-4 周期串 Periodic Strings UVa445
- Android中获取应用程序(包)的大小-----PackageManager的使用(二)
- slurm and MPI example
- 【初识Oracle】③数据库对基本数据类型进行操作的函数
- hd 2162 Add ‘em
- .NET Reactor.NET代码保护和许可授权管理系统软件下载
- 算法竞赛入门经典(第2版)习题4-4 骰子涂色 Cube painting UVa 253
- 成为一名优秀的测试员,你需要做到以下10点
- 树状数组求逆序数
- 用js/JQuery获取/设置元素属性
- Scrollview中listview显示不全的解决办法
- C++传值,传址,引用的区别
- IDL
- boa搭建
- JS【判断输入表单是否为空、两次输入密码是否相同】