UVA 253-Cube painting

来源:互联网 发布:react.js 中文文档 编辑:程序博客网 时间:2024/05/29 17:54

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;}
0 0
原创粉丝点击