uva253Cube painting骰子涂色

背景:这题我写出来发生了一个奇怪的现象,就是同样的代码,在vc6.0里面运行的好好的,但在codebloke里面却死活不对,最后费了我九牛二虎之力,我终于找到了,原来数组开小了,o(︶︿︶)o 唉。

思路:分别用两个数组模拟两个骰子,定义三个旋转函数,分别绕着xyz三个方向旋转,然后定义一个判断函数,在判断函数中用三个for循环,在循环中对骰子2进行旋转,旋转后与骰子1比较,,看是否相同,判断是否相同可以直接用strcmp()函数。

学习:自顶向下程序设计方法,就是先写出程序框架,然后再去完善各个函数。

#include <stdio.h>#include <string.h>char dice1[8],dice2[8];void change1(void){char ch;ch=dice2[0];dice2[0]=dice2[2];dice2[2]=dice2[5];dice2[5]=dice2[3];dice2[3]=ch;}void change2(void){char ch;ch=dice2[0];dice2[0]=dice2[1];dice2[1]=dice2[5];dice2[5]=dice2[4];dice2[4]=ch;}void change3(void){char ch;ch=dice2[1];dice2[1]=dice2[3];dice2[3]=dice2[4];dice2[4]=dice2[2];dice2[2]=ch;}int judge(void){for(int i=0;i<4;i++){change1();for(int j=0;j<4;j++){change2();for(int k=0;k<4;k++){change3();if(strcmp(dice1,dice2)==0) return 1;}}}return 0;}int main(void){while(scanf("%c",&dice1[0])==1){for(int i=1;i<6;i++)scanf("%c",&dice1[i]);for(int j=0;j<6;j++)scanf("%c",&dice2[j]);dice1[6]='\0';dice2[6]='\0';puts(judge()?"TRUE":"FALSE");getchar();}return 0;}

没有预兆目的地在哪,前进的脚步不能停下,

uva253Cube painting骰子涂色

相关文章:

你感兴趣的文章:

标签云: