三角形布图

**

三角形布图

在这里插入图片描述
**
就是这种鬼样子

#include<iostream>
#include<vector>
#include<string>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<algorithm>
#define N 100003
#define mod 10000000007

using namespace std;
int n,a[N];
char map[100][100]={0};
void change(int n,int row,int col)
{
	int w=pow(2,n)-1;
	int h=pow(2,n-1);
	if(n==1) map[row][col]='*';//1--2之间的关系可推得 
	else{  
		change(n-1,row,col+(w+1)/4);//我们先通过二维数组将漆黑一片的空间抽象成一幅图,接着把图坐标化,每个数组变成这样(【】,【】) 
		change(n-1,row+h/2,col);//图集的描述如何最为精简?元素的组成:这幅图的大小,这幅图的首位置(头位置坐标),是不是确定了这两个元素
				                 // 就可以把图案的轮廓描述出来了;然后每张图案,只要我们确定了他们的大小和头部位置,以及他们相互间的关系,推到1——2.数组不就赋值完成,也即点点坐标的元素就确定清了,由此可以画出图案。 
		change(n-1,row+h/2,col+(w+1)/2);
	}
}
int main()
{
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int i,j;
	while(cin>>n){
		for(i=0;i<100;i++)
			for(j=0;j<100;j++)
				map[i][j]=' ';
		change(n,0,0);
		for(i=0;i<=pow(2,n);i++){
			for(j=0;j<=pow(2,n);j++)
				cout<<map[i][j]<<' ';
			cout<<endl;		
		} 
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值