您的位置:首页 > 大数据 > 人工智能

UVA 253-Cube painting

2016-07-19 19:41 501 查看

UVA 253-Cube painting

题目大意:用题目顺序来读正方体各个面的字母,判断俩个正方体是否是同一个正方体

解题思路:正方体共六个面,可以把每2个对面进行组合,形成3个组合,让r对应1,b对应3,g对应5,组合面字母所对应的数字相加得到一个数字,如r与b组合得到1+3=4,俩个正方体都将3个数字排序,然后逐个比较,如果都相同说明是同一个正方体

#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
int turn(char a) {
switch(a) {
case 'r': return 1;
case 'b': return 3;
case 'g': return 5;
}
return 0;
}
int cmd(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
int main() {
char c[20];
int a[3];
int b[3];
while(gets(c) && c[0] != EOF) {
for(int i = 0; i < 3; i++) {
int j = 5 - i;
a[i] = turn(c[i]) + turn(c[j]);
}
int m = 0;
for(int i = 6; i < 9; i++) {
int j = 11 - i + 6;
b[m] = turn(c[i]) + turn(c[j]);
m++;
}
qsort(a, 3, sizeof(int), cmd);
qsort(b, 3, sizeof(int), cmd);
int res = 1;
for(int i = 0; i < 3; i++) {
if(a[i] != b[i]) {
res = 0;
break;
}
}
if(res == 1)
printf("TRUE\n");
else
printf("FALSE\n");

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 uva