优美三角剖分
题目
小X同学为了搞好和小C同学的关系,特意寻找了一些优美的图像作为礼物。 这是一些由无穷无尽三角形组成的极为优美的图形,小X同学很想实现这些极富美感的图形,但是作为一名初赛都未过的伪退役选手,他水平有限,于是这个艰巨的任务就落在你们身上了。 由于好心的出题人,数据范围n<=10。 (具体图形详见样例,每一阶图形都是由3个上一阶图形拼成的) [外链图片转存失败(img-lTHiecvU-1562482901043)(http://10.156.31.134/admin/upload/images/未标题-1 拷贝(1).jpg)]
输入
只有一行,输入一个整数为N,表示要求出N阶的图形。
输出
输出相应的图形。
输入样例:T1
1
输入样例:T2
2
输入样例:T3
3
输出样例:T1
/\
/__\
输出样例:T2
/\
/__\
/\
/\
/__\
/__\
输出样例:T3
/\
/__\
/\
/\
/__\
/__\
/\
/\
/__\
/__\
/\
/\
/\
/\
/__\
/__\
/__\
/__\
解题思路
把初始的值为一个最小的三角形,分成上下两层,不断的枚举来合成下一个即可.
注意
空格也要加上去.
程序如下
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std
;
int k
,n
;
string a
[10001];
int main()
{
k
=2;
a
[1]=" /\\ ";
a
[2]="/__\\";
scanf("%d",&n
);
for(int i
=2;i
<=n
;++i
)
{
for(int j
=1;j
<=k
;++j
)
{
a
[k
+j
]=a
[j
]+a
[j
];
for(int q
=1;q
<=k
;++q
)
{
a
[j
]=" "+a
[j
]+" ";
}
}
k
*=2;
}
for(int i
=1;i
<=k
;++i
)
{
cout
<<a
[i
]<<endl
;
}
return 0;
}