1. 程式人生 > >ZZULI - 小新三連(三):小新在求助

ZZULI - 小新三連(三):小新在求助

題目連結: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;
}