优美三角剖分
题目
小X同学为了搞好和小C同学的关系,特意寻找了一些优美的图像作为礼物。
这是一些由无穷无尽三角形组成的极为优美的图形,小X同学很想实现这些极富美感的图形,但是作为一名初赛都未过的伪退役选手,他水平有限,于是这个艰巨的任务就落在你们身上了。
由于好心的出题人,数据范围n<=10。
(具体图形详见样例,每一阶图形都是由3个上一阶图形拼成的)
输入
只有一行,输入一个整数为N,表示要求出N阶的图形。
输出
输出相应的图形。
样例输入
3
2
1
(这里要分开输入,输出也是分开输出,一个程序输入一个数,输出一个图案)
样例输出
数据范围
10个测试点,n为1-10
思路
这道题就是模拟。
上面题目已经写了第n个图形是由三个第n-1个图形组成的。那么,我们就可以先初始化第一个图形,然后每一次复制上一个图形,然后处理一下空格,就可以了。
代码
#include<cstdio>
#include<iostream>
using namespace std;
int n,a=2;
string f[1025];
int main()
{
scanf("%d",&n);//输入
f[1]=" /\\ ";//初始化第一个三角形
f[2]="/__\\";//初始化第一个三角形
for (int i=2;i<=n;i++)
{
for (int j=1;j<=a;j++)
f[a+j]=f[j]+f[j];//复制
for (int j=1;j<=a;j++)
for (int k=1;k<=a;k++)
f[j]=" "+f[j]+" ";//处理空格
a*=2;//高度乘二
}
for (int i=1;i<=a;i++) cout<<f[i]<<endl;//输出
return 0;
}