码迷,mamicode.com
首页 > 其他好文 > 详细

uva253Cube painting骰子涂色

时间:2015-02-05 18:20:23      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:uva   uva253   uva253骰子涂色   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骰子涂色

标签:uva   uva253   uva253骰子涂色   uva253cube painting   

原文地址:http://blog.csdn.net/qiweigo/article/details/43529909

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!