题目链接:http://acm.zzuli.edu.cn/problem.php?id=2483
时间限制: 1 Sec  内存限制: 128 MB

题目描述

小新回到机房后,刷了很多的题,但是他现在碰到了一道难题,无法解决,所以他想寻求你的帮助.问题是这样的,有一个魔方,魔方包含六种图案,可以分别表示为六个数字,问小新能不能在有限步数之内将魔方还原为所有面同色的状态,小新感觉头都大了。
由于那道题目的输入只包含数字,小新看的头都晕了,所以小新想让你帮他画出魔方的某一面,以方便自己观察魔方的状态。魔方的每一面包括九个格子,每个格子为3*3的大小,1、2、3、4、5、6所代表的图案分别为@、*、^、$、&、o。

输入

第一行输入一个数T,代表输入的测试样例的组数.每组数据三行,每行有空格分隔三个数字n(1<=n<=6),魔方的某一面对应的格子的图案。

输出

对于每个样例将魔方的那个面打印出来,两组样例之间需要有空行分隔.具体格式请参照样例输出。

样例输入

2
1 2 3
1 2 3
1 2 3
5 6 3
6 1 3
5 2 5

样例输出

@@@|***|^^^
@@@|***|^^^
@@@|***|^^^
-----------
@@@|***|^^^
@@@|***|^^^
@@@|***|^^^
-----------
@@@|***|^^^
@@@|***|^^^
@@@|***|^^^

&&&|ooo|^^^
&&&|ooo|^^^
&&&|ooo|^^^
-----------
ooo|@@@|^^^
ooo|@@@|^^^
ooo|@@@|^^^
-----------
&&&|***|&&&
&&&|***|&&&
&&&|***|&&&

解题思路

这一题就是个水题,只要按要求把图形打印出来就行了(每个数字代表一个3*3的图形)。

#include <stdio.h>
char a[8] = {0, '@','*', '^', '$', '&', 'o'};
int main() {
    int t, s[5][5];
    scanf("%d", &t);
    while (t--) {
        for (int i = 0; i < 3; i++)
            for (int j = 0; j < 3; j++)
                scanf("%d", &s[i][j]);
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                for (int k = 0; k < 9; k++) {
                    if (!(k % 3) && k)
                        printf("|");
                    printf("%c", a[s[i][k / 3]]);
                }
                printf("\n");           
            }
            if (i != 2) {
                for (int j = 0; j < 11; j++)
                    printf("-");
                printf("\n");
            }
        }
        if (t)
            printf("\n");
    }
    return 0;
}