题目链接: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;
}