UVA 253 Cube painting

题意:输入字符串代表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 }

 

             
               
               

 

posted @ 2019-01-27 00:01  付玬熙  阅读(147)  评论(0编辑  收藏  举报