>Description
这是一些由无穷无尽三角形组成的极为优美的图形。
由于好心的出题人,数据范围n<=10。
(具体图形详见样例,每一阶图形都是由3个上一阶图形拼成的)
>Input
只有一行,输入一个整数为N,表示要求出N阶的图形。
>Output
输出相应的图形。
>Sample Input
3
2
1
>Sample Output
数据范围:
10个测试点,n为1-10
>解题思路
(不知道为什么用不了scanf,所以用丑到爆的cin)
就是直接把之前的图案复制粘贴两个下来,注意加空格。然后我一开始每行的开头都没有加上空格,只计算中间的空格,最后输出的时候再输出空格。
但是其实我整个上午都在做这道题
>代码
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
int n,nn,nm,cyz,x;
string aa[1025];
int main()
{
cin>>n;
x=nn=1<<n,nm=1; //x用来输出每行开头的空格,nn为行数,nm为每次上一个三角形的行数
aa[1]="/\\";
aa[2]="/__\\"; //两个\\才能输出
for(int i=2;i<=n;i++) //第i个字符串
{
nm*=2; //上一个三角形的行数
for(int j=1;j<=nm;j++)
{
aa[nm+j]=aa[j]; //先加上一个
cyz=2*nm-aa[j].size(); //计算中间的空格
for(int t=1;t<=cyz;t++)
aa[nm+j]+=" "; //累加空格
aa[nm+j]+=aa[j]; //再加上一个
}
}
for(int i=1;i<=nn;i++)
{
x--; //前面的空格
for(int j=1;j<=x;j++)
cout<<" ";
cout<<aa[i]<<endl; //输出
}
return 0;
}