您的位置:首页 > 其它

UVA253 骰子涂色

2020-02-03 02:43 549 查看

此题的解题思路与UVA1587类似,排序后对应的面的字符会是相同的。
给出sample input&output。
rbgggrrggbgr
rrrbbbrrbbbr
rbgrbgrrrrrg
TRUE
FALSE
FALSE

#include<stdio.h>
struct cube
{
int x,y;
};
struct cube s1[5],s2[5];
char a[15];

char max(char a,char b)
{
return a>b?a:b;
}

char min(char a,char b)
{
return a<b?a:b;
}

void sort(struct cube s[])
{
int i,j,mark,tempx,tempy;
for(i=0;i<3;i++){
mark=i;
for(j=i+1;j<3;j++){
if(s[mark].x>s[j].x){
mark=j;
}
}
if(mark!=i){
tempx=s[i].x; tempy=s[i].y;
s[i].x=s2[mark].x; s[i].y=s[mark].y;
s[mark].x=tempx; s[mark].y=tempy;
}
}
}

int main()
{
int i,mark;
while(scanf("%s",a)==1){             //将对应的面的ascii码排序后
s1[0].x=min(a[0],a[5]);          //存储到x,y。
s1[0].y=max(a[0],a[5]);
s1[1].x=min(a[1],a[3]);
s1[1].y=max(a[1],a[3]);
s1[2].x=min(a[2],a[4]);
s1[2].y=max(a[2],a[4]);
s2[0].x=min(a[6],a[11]);
s2[0].y=max(a[6],a[11]);
s2[1].x=min(a[7],a[9]);
s2[1].y=max(a[7],a[9]);
s2[2].x=min(a[8],a[10]);
s2[2].y=max(a[8],a[10]);
sort(s1); sort(s2);              //以x为排序对象对3对对应的面进行排序
for(mark=1,i=0;i<3;i++){         //经过了两次排序后,对应的位置应该相同
if(s1[i].x!=s2[i].x || s1[i].y!=s2[i].y){
mark=0;
break;
}
}
if(mark)
printf("TRUE\n");
else
printf("FALSE\n");
}
}

此题与UVA1587都运用到长方体有对应的三对面,只要按照一定的顺序排列,两个相同的长方体对应的地方必定会相同。
如有纰漏错误,望指出。

 

转载于:https://www.cnblogs.com/ZackBee/p/6379538.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
anwuhuan8712 发布了0 篇原创文章 · 获赞 0 · 访问量 81 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: