图形打印四
原创
©著作权归作者所有:来自51CTO博客作者yitahutu79的原创作品,请联系作者获取转载授权,否则将追究法律责任
题目描述
当 n 为 1 时,图形如下图:
当 n 为 2 时,图形如下图:
当 n≥2 时,图形规律如下:
图形n-1 图形n-1
图形n-1
图形n-1 图形n-1
给定 n 组数据,输出每组数据对应的图形。
输入
输入共 n+1 行,前 n 行每行一个数,表示要输出的图形的大小,最后一行输入 −1 代表程序结束。(1≤n≤7)
输出
每输入一个数输出一组图形,并在图形后的下一行输出一个 −。
注意,图形后应补齐空格。
样例输入
1
2
3
4
-1
样例输出
X
-
X X
X
X X
-
X X X X
X X
X X X X
X X
X
X X
X X X X
X X
X X X X
-
X X X X X X X X
X X X X
X X X X X X X X
X X X X
X X
X X X X
X X X X X X X X
X X X X
X X X X X X X X
X X X X
X X
X X X X
X X
X
X X
X X X X
X X
X X X X
X X X X X X X X
X X X X
X X X X X X X X
X X X X
X X
X X X X
X X X X X X X X
X X X X
X X X X X X X X
-
数据规模与约定
时间限制:1 s
内存限制:256 M
100% 的数据保证 1≤n≤7
#include <iostream>
using namespace std;
int num[10] = { 0,1,3,9,27,81,243,729,2187};
char ans[1000][1000] = { 0 };
void func(int x, int y, int n) {
if (n == 1) ans[x][y] = 'X';
else {
func(x, y, n - 1);
func(x, y + num[n] / 3 * 2, n - 1);
func(x + num[n] / 3, y + num[n] / 3, n - 1);
func(x + num[n] / 3 * 2, y, n - 1);
func(x + num[n] / 3 * 2, y + num[n] / 3 * 2, n - 1);
}
}
int main() {
int temp;
while (cin>>temp) {
if (temp == -1) break;
func(1, 1, temp);
for (int i = 1; i <= num[temp]; i++) {
for (int j = 1; j <= num[temp]; j++) {
if (ans[i][j]) {
cout << 'X';
}
else {
cout << ' ';
}
}
cout << endl;
}
cout << '-' << endl;
}
return 0;
}