#1819. 南蛮图腾
南蛮图腾
提示
的图案如下所示
/\
/__\
可以发现 的图案是由三个 构成的, 的图案是由三个 构成的。
每一部分的图案仅仅只是位置不同而已,图案的形状是完全一样的,我们可以考虑使用递归分解这个问题来解决。
首先我们需要规定出图案的位置,这里可以表示左下角 /
的位置记为
则其余位置分别是
/\
/__\
- 左下的
/
: - 左上的
/
: - 右上的
\
: - 右下的
\
: - 左边的
_
: - 右边的
_
:
观察 的图案。
/\
/__\
/\ /\
/__\/__\
/\ /\
/__\ /__\
/\ /\ /\ /\
/__\/__\/__\/__\
它是由 个 的图案构成的。
可以发现每个 的图案位置如下所示。我们设置一个递归函数,其一共有三个函数如下所示
void f(int n, int x, int y)
其中 为问题规模, 为图案左下的位置。
递归方程
- 左下部分可以分解为 来处理。
- 右边部分可以分解为 来处理。
- 上边部分可以分解为 处理。
递归边界
当 的时候,我们按照
- 左下的
/
: - 左上的
/
: - 右上的
\
: - 右下的
\
: - 左边的
_
: - 右边的
_
:
这六点把坐标设置好即可。
主函数 int main()
内部
在主函数中,我们从最左下角的 /
开始递归。
最左下角的 /
的坐标是
即调用 开始递归。
将所得的图案保存到一个char
类型的二维数组中,最后输出整个数组的值即可。
题目描述
给定一个正整数 ,参考输出样例,输出图形。
输入格式
每个数据输入一个正整数 ,表示图腾的大小(此大小非彼大小)
输出格式
这个大小的图腾
2
/\
/__\
/\ /\
/__\/__\
3
/\
/__\
/\ /\
/__\/__\
/\ /\
/__\ /__\
/\ /\ /\ /\
/__\/__\/__\/__\
提示
数据保证,。