1 #include <iostream>
2 using namespace std;
3
4 int clock[3][3];
5 int clo[3][3];
6 int movel[9][3][3]={1,1,0,1,1,0,0,0,0,
7 1,1,1,0,0,0,0,0,0,
8 0,1,1,0,1,1,0,0,0,
9 1,0,0,1,0,0,1,0,0,
10 0,1,0,1,1,1,0,1,0,
11 0,0,1,0,0,1,0,0,1,
12 0,0,0,1,1,0,1,1,0,
13 0,0,0,0,0,0,1,1,1,
14 0,0,0,0,1,1,0,1,1};
15 int num[10]={0};
16 int n=0;
17 int nu[10000];
18 int minn=10000;
19 int minnu[10000];
20 void zhuan(int step);
21 void zhizhen();
22 bool same();
23 int main()
24 {
25 for(int i=0;i<3;i++)
26 for(int j=0;j<3;j++)
27 cin >>clock[i][j];
28 zhuan(0);
29 for(int i=0;i<minn;i++)
30 cout <<minnu[i]<<" ";
31 return 0;
32 }
33
34 void zhuan(int step)
35 {
36 if(step==9)
37 {
38 n=0;
39 zhizhen();
40 if(same()&&n<minn)
41 {
42 minn=n;
43 for(int i=0;i<minn;i++)
44 minnu[i]=nu[i];
45 }
46 return;
47 }
48 for(int i=0;i<4;i++)
49 {
50 num[step]=i;
51 zhuan(step+1);
52 }
53 }
54
55 void zhizhen()
56 {
57 for(int i=0;i<3;i++)
58 {
59 for(int j=0;j<3;j++)
60 clo[i][j]=clock[i][j];
61 }
62 for(int i=0;i<9;i++)
63 {
64 for(int m=0;m<num[i];m++)
65 {
66 nu[n]=i+1;
67 n++;
68 for(int j=0;j<3;j++)
69 {
70 for(int k=0;k<3;k++)
71 clo[j][k]=(clo[j][k]+movel[i][j][k])%4;
72 }
73 }
74 }
75 }
76 bool same()
77 {
78 bool ret=true;
79 for(int i=0;i<3;i++)
80 {
81 for(int j=0;j<3;j++)
82 {
83 if(clo[i][j]!=0)
84 {
85 ret=false;
86 }
87 }
88 }
89 return ret;
90 }