优美三角剖分【字符】【模拟】

>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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值