UVA - 253 Cube painting(骰子涂色)
2015-11-21 18:11
537 查看
题目链接:UVA - 253 Cube painting
题目大意:
输入两个骰子,判断两个骰子是否等价,每个骰子用6个字母表示,例如
123456, 顺序为上前左右后下。
思路:
任取一个面让其位于正前( 总共6个面),然后转动上下左右四个面(转4次),这样一个骰子的所有可能表示形式就全遍历到了。
举个例子,骰子123456上下方向转动时,改变的是上前下后即1265四个面,可转动至2651,6512,5126总计四种。
代码:
题目大意:
输入两个骰子,判断两个骰子是否等价,每个骰子用6个字母表示,例如
123456, 顺序为上前左右后下。
思路:
任取一个面让其位于正前( 总共6个面),然后转动上下左右四个面(转4次),这样一个骰子的所有可能表示形式就全遍历到了。
举个例子,骰子123456上下方向转动时,改变的是上前下后即1265四个面,可转动至2651,6512,5126总计四种。
代码:
[code]#include <stdio.h> #include <iostream> #include <vector> #include <math.h> #include <algorithm> #include <queue> #include <string.h> #include <set> #include <stack> #include <stdlib.h> #include <time.h> using namespace std; int fa[6][6] = { 1,2,3,4,5,6, 5,1,3,4,6,2, 2,6,3,4,1,5, 1,4,2,5,3,6, 1,5,4,3,2,6, 1,3,5,2,4,6 }; int fb[4][6] = { 1,2,3,4,5,6, 3,2,6,1,5,4, 6,2,4,3,5,1, 4,2,1,6,5,3 }; bool is(char s[], char b[]) { for(int i=0;i<4;i++) { char t[7]; for(int j=0;j<6;j++) t[j] = s[fb[i][j]-1]; t[6] = '\0'; if(strcmp(t, b) == 0) return true; } return false; } int main() { char a[7], b[7], s[15]; while(cin>>s) { for(int i=0;i<6;i++) a[i] = s[i]; for(int i=0;i<6;i++) b[i] = s[i+6]; int i; b[6] = a[6] = '\0'; for(i=0;i<6;i++) { char t[7]; for(int j=0;j<6;j++) t[j] = a[fa[i][j]-1]; t[6] = '\0'; if(is(t, b)) break; } if(i == 6) cout<<"FALSE"<<endl; else cout<<"TRUE"<<endl; } return 0; }
相关文章推荐
- Paint及Canvas的简单应用
- 人工智能与数据挖掘顶级会议
- LINK1123:failure during conversion to COFF:file invalid or corrupt
- 2014_acmicpc_shanghai_google
- Sendmail导致开机慢
- 总结nonatomic,assigncopy,retain
- 视觉基础:关于机器视觉、机器学习及人工智能领域
- 2015(1025-1108)学习总结_AidanDai
- 2015(1018-1025)学习总结_AidanDai
- mac 下解决OError: decoder jpeg not available问题
- LeetCode -- Contains Duplicate II
- The source attachment does not contain the source for the file解决方案
- 人工智能机器人“能文能武”,但还差一些感性与思考
- 0015.scala的多重继承、多重继承构造器执行顺序、基于trait的AOP实现
- 0014.trait的混入
- 从1894年伦敦马粪危机看人工智能威胁论
- Projective Dynamics: Fusing Constraint Projections for Fast Simulation
- ci框架(codeigniter)Email发送邮件、收件人、附件、Email调试工具
- airflow简析(一)
- EXPLAIN