题意:输入两个骰子,判断是否等价
因为每一个面可以作顶面,共6*4种情况,枚举就可以了
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include <cmath> 5 #include<stack> 6 #include<vector> 7 #include<map> 8 #include<queue> 9 #include<algorithm> 10 #define mod=1e9+7; 11 using namespace std; 12 13 typedef long long LL; 14 char s[15],t[10],a[105][105]; 15 16 int main(){ 17 int i,j,n,len; 18 while(cin>>(s+1)){ 19 memset(a,0,sizeof(a)); 20 21 strcpy(t,(s+7)); 22 23 //--------1---- 24 a[1][0]=s[1]; 25 a[1][1]=s[2]; 26 a[1][2]=s[3]; 27 a[1][3]=s[4]; 28 a[1][4]=s[5]; 29 a[1][5]=s[6]; 30 31 a[2][0]=s[1]; 32 a[2][1]=s[3]; 33 a[2][2]=s[5]; 34 a[2][3]=s[2]; 35 a[2][4]=s[4]; 36 a[2][5]=s[6]; 37 38 a[3][0]=s[1]; 39 a[3][1]=s[5]; 40 a[3][2]=s[4]; 41 a[3][3]=s[3]; 42 a[3][4]=s[2]; 43 a[3][5]=s[6]; 44 45 a[4][0]=s[1]; 46 a[4][1]=s[4]; 47 a[4][2]=s[2]; 48 a[4][3]=s[5]; 49 a[4][4]=s[3]; 50 a[4][5]=s[6]; 51 52 //----2-------- 53 54 a[5][0]=s[2]; 55 a[5][1]=s[6]; 56 a[5][2]=s[3]; 57 a[5][3]=s[4]; 58 a[5][4]=s[1]; 59 a[5][5]=s[5]; 60 61 a[6][0]=s[2]; 62 a[6][1]=s[3]; 63 a[6][2]=s[1]; 64 a[6][3]=s[6]; 65 a[6][4]=s[4]; 66 a[6][5]=s[5]; 67 68 a[7][0]=s[2]; 69 a[7][1]=s[1]; 70 a[7][2]=s[4]; 71 a[7][3]=s[3]; 72 a[7][4]=s[6]; 73 a[7][5]=s[5]; 74 75 a[8][0]=s[2]; 76 a[8][1]=s[4]; 77 a[8][2]=s[6]; 78 a[8][3]=s[1]; 79 a[8][4]=s[3]; 80 a[8][5]=s[5]; 81 82 //--------3------- 83 a[9][0]=s[3]; 84 a[9][1]=s[6]; 85 a[9][2]=s[5]; 86 a[9][3]=s[2]; 87 a[9][4]=s[1]; 88 a[9][5]=s[4]; 89 90 a[10][0]=s[3]; 91 a[10][1]=s[5]; 92 a[10][2]=s[1]; 93 a[10][3]=s[6]; 94 a[10][4]=s[2]; 95 a[10][5]=s[4]; 96 97 a[11][0]=s[3]; 98 a[11][1]=s[1]; 99 a[11][2]=s[2]; 100 a[11][3]=s[5]; 101 a[11][4]=s[6]; 102 a[11][5]=s[4]; 103 104 a[12][0]=s[3]; 105 a[12][1]=s[2]; 106 a[12][2]=s[6]; 107 a[12][3]=s[1]; 108 a[12][4]=s[5]; 109 a[12][5]=s[4]; 110 111 //--------4-------- 112 a[13][0]=s[4]; 113 a[13][1]=s[6]; 114 a[13][2]=s[2]; 115 a[13][3]=s[5]; 116 a[13][4]=s[1]; 117 a[13][5]=s[3]; 118 119 a[14][0]=s[4]; 120 a[14][1]=s[2]; 121 a[14][2]=s[1]; 122 a[14][3]=s[6]; 123 a[14][4]=s[5]; 124 a[14][5]=s[3]; 125 126 a[15][0]=s[4]; 127 a[15][1]=s[1]; 128 a[15][2]=s[5]; 129 a[15][3]=s[2]; 130 a[15][4]=s[6]; 131 a[15][5]=s[3]; 132 133 a[16][0]=s[4]; 134 a[16][1]=s[5]; 135 a[16][2]=s[6]; 136 a[16][3]=s[1]; 137 a[16][4]=s[2]; 138 a[16][5]=s[3]; 139 //-------5--------- 140 a[17][0]=s[5]; 141 a[17][1]=s[6]; 142 a[17][2]=s[4]; 143 a[17][3]=s[3]; 144 a[17][4]=s[1]; 145 a[17][5]=s[2]; 146 147 a[18][0]=s[5]; 148 a[18][1]=s[4]; 149 a[18][2]=s[1]; 150 a[18][3]=s[6]; 151 a[18][4]=s[3]; 152 a[18][5]=s[2]; 153 154 a[19][0]=s[5]; 155 a[19][1]=s[1]; 156 a[19][2]=s[3]; 157 a[19][3]=s[4]; 158 a[19][4]=s[6]; 159 a[19][5]=s[2]; 160 161 a[20][0]=s[5]; 162 a[20][1]=s[3]; 163 a[20][2]=s[6]; 164 a[20][3]=s[1]; 165 a[20][4]=s[4]; 166 a[20][5]=s[2]; 167 168 //------6--------- 169 a[21][0]=s[6]; 170 a[21][1]=s[2]; 171 a[21][2]=s[4]; 172 a[21][3]=s[3]; 173 a[21][4]=s[5]; 174 a[21][5]=s[1]; 175 176 a[22][0]=s[6]; 177 a[22][1]=s[4]; 178 a[22][2]=s[5]; 179 a[22][3]=s[2]; 180 a[22][4]=s[3]; 181 a[22][5]=s[1]; 182 183 a[23][0]=s[6]; 184 a[23][1]=s[5]; 185 a[23][2]=s[3]; 186 a[23][3]=s[4]; 187 a[23][4]=s[2]; 188 a[23][5]=s[1]; 189 190 a[24][0]=s[6]; 191 a[24][1]=s[3]; 192 a[24][2]=s[2]; 193 a[24][3]=s[5]; 194 a[24][4]=s[4]; 195 a[24][5]=s[1]; 196 197 int flag=0; 198 for(i=1;i<=24;i++){ 199 if(strcmp(a[i],t)==0){ 200 printf("TRUE "); 201 flag=1; 202 break; 203 } 204 } 205 if(!flag) 206 printf("FALSE "); 207 } 208 return 0; 209 }
话说应该写一个旋转骰子的函数的吧= =可是不懂写,于是写下了6*4*6=144行代码来旋转骰子= =
如果是让输入是n面体的话,就不能这样了的说,一会儿搜下题解看看别人的旋转怎么写的