标签:lib nbsp div 左旋转 技术 efi [1] 分布 注意
题意:输入字符串代表2个骰子,求出他们是不是相同的骰子(通过旋转)。
思路:①注意输入的字符串代表了骰子颜色的分布,如下:
同时这也是数颜色的顺序(未转动时),和字符串内容的顺序。
②骰子1不动,骰子2不停转动,分别选0到5做上图标号为1的位置(6次),然后2到4不停的转动(即4面转动,4次),
共24次(最坏)。
③下图分别为1转动到位置编号1,和0在位置编号0,骰子水平面向左旋转90°得到的骰子。
数一下,分别是1,5,2,3,0,4, 和0,3,1,4,2
分别重复,可以观察出:1.旋转6次对应的颜色顺序;
2.旋转其实是,ch=str3[1];str3[1]=str3[2];str3[2]=str3[4];str3[4]=str3[3];str3[3]=ch;
1 #include "stdio.h" 2 #include "string.h" 3 #include "stdlib.h" 4 #define FIN freopen("input.txt","r",stdin) 5 #define FOUT freopen("output.txt","w",stdout) 6 char c[12],str1[7],str2[7],str3[7]; 7 int roll[7][7] = { {0,1,2,3,4,5},{1,5,2,3,0,4},{2,1,5,0,4,3}, {3,1,0,5,4,2},{4,0,2,3,5,1},{5,4,2,3,1,0}}; 8 int main() 9 { 10 // FIN; 11 // FOUT; 12 while(scanf("%s",c)!=EOF) 13 { 14 for(int i=0;i<12;i++) 15 { 16 if(i<=5) 17 str1[i]=c[i]; 18 else 19 str2[i-6]=c[i]; 20 } 21 str1[6]=‘\0‘; 22 str2[6]=‘\0‘; 23 int flag=0; 24 // printf("1=%s 2=%s\n",str1,str2); 25 for(int i=0;i<6;i++) 26 { 27 for(int j=0;j<6;j++) 28 str3[j]=str2[roll[i][j]]; 29 str1[6]=‘\0‘; 30 if(strcmp(str1,str3)==0) 31 { 32 flag=1; 33 break; 34 } 35 for(int j=0;j<3;j++) 36 { 37 char ch=str3[1]; 38 str3[1]=str3[2]; 39 str3[2]=str3[4]; 40 str3[4]=str3[3]; 41 str3[3]=ch; 42 if(strcmp(str1,str3)==0) 43 { 44 flag=1; 45 break; 46 } 47 } 48 if(flag) 49 break; 50 } 51 if(flag) 52 printf("TRUE\n"); 53 else 54 printf("FALSE\n"); 55 } 56 return 0; 57 }
标签:lib nbsp div 左旋转 技术 efi [1] 分布 注意
原文地址:https://www.cnblogs.com/fudanxi/p/10325356.html