首页 > 代码库 > XDOJ_1004_暴力
XDOJ_1004_暴力
http://acm.xidian.edu.cn/problem.php?id=1004
看着很复杂,其实简单。
固定一个二十面体的一个点,拿另一个图形枚举每个点来比较,每一次比较可以比5次(旋转),只要有一次是相同的,就是一样的。
水题,就是要在纸上找出一个个点,细心一点就可以了。
#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;int a[15],b[15],A,B,C,D,E,F,G,H,I,J;int point[12][2] = {{1,12},{2,7},{3,8},{4,9},{5,10},{6,11},{7,2},{8,3},{9,4},{10,5},{11,6},{12,1}};int x[12][10] = {{2,3,4,5,6,10,11,7,8,9},{1,6,9,10,3,5,8,12,11,4},{11,4,1,2,10,7,5,6,9,12},{1,3,11,7,5,2,10,12,8,6}, {1,4,7,8,6,3,11,12,9,2},{1,5,8,9,2,4,7,12,10,3},{4,11,12,8,5,3,10,9,6,1},{12,9,6,5,7,10,2,1,4,11}, {6,8,12,10,2,5,7,11,3,1},{2,9,12,11,3,6,8,7,4,1},{3,10,12,7,4,2,9,8,5,1},{9,8,7,11,10,6,5,4,3,2}};int fun(int AA,int BB,int CC,int DD,int EE,int FF,int GG,int HH,int II,int JJ){ if(AA==A && BB==B && CC==C && DD==D && EE==E && FF==F && GG==G && HH==H && II==I && JJ==J) return 1; if(AA==B && BB==C && CC==D && DD==E && EE==A && FF==G && GG==H && HH==I && II==J && JJ==F) return 1; if(AA==C && BB==D && CC==E && DD==A && EE==B && FF==H && GG==I && HH==J && II==F && JJ==G) return 1; if(AA==D && BB==E && CC==A && DD==B && EE==C && FF==I && GG==J && HH==F && II==G && JJ==H) return 1; if(AA==E && BB==A && CC==B && DD==C && EE==D && FF==J && GG==F && HH==G && II==H && JJ==I) return 1; return 0;}int main(){ int T; scanf("%d",&T); while(T--) { int flag = 1; for(int i = 1;i <= 12;i++) scanf("%d",&a[i]); for(int i = 1;i <= 12;i++) scanf("%d",&b[i]); A = b[2],B = b[3],C = b[4],D = b[5],E = b[6]; F = b[10],G = b[11],H = b[7],I = b[8],J = b[9]; for(int i = 0;i < 12;i++) { if(a[point[i][0]] == b[1] && a[point[i][1]] == b[12]) { if(fun(a[x[i][0]],a[x[i][1]],a[x[i][2]],a[x[i][3]],a[x[i][4]], a[x[i][5]],a[x[i][6]],a[x[i][7]],a[x[i][8]],a[x[i][9]])) { flag = 0; printf("Identical\n"); break; } } } if(flag) printf("Different\n"); } return 0;}
XDOJ_1004_暴力
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。