p1498南蛮图腾 谢尔宾斯基三角形 分形

p1498南蛮图腾 谢尔宾斯基三角形

//规律就是以最小图腾为基本单位,
//先向右复制一个,再向上复制一个
//比如第一个就是这样组成一个小三角形,第二个就是这样组成了一个大三角形


/*
        第一个图形倒着存入
         /\       /__\
        /__\       /\

*/ 
#include<cstdio>
#include<iostream>
#include<cstring>
const int max1=1026;
const int max2=2050;
using namespace std;
char pic[max1][max2];//图腾数组 ,算了一下最大是1024 2048 ,用全局变量
int main()
{
	int n;//题目中给的n代表图腾大小 
	scanf("%d",&n);
    memset(pic,' ',sizeof(pic));//这一句一定要加,不然会爆0
	pic[0][0]=pic[1][1]='/';//代表0行0列,1行1列 
	pic[0][1]=pic[0][2]='_';//代表0行1列,0行两列
	pic[0][3]=pic[1][2]='\\';//转义字符 
	//发现每次向右复制一次,向上复制一次即可,这算一次,
	//n为2的时候,这个周期进行一次,n为3的时候这个周期进行2次 ,n-1次 
	int wide=4;//初始宽度为4,初始高度为它的一半 
	for(int k=1;k<=n-1;k++)//复制n-1次 
	{
		for(int i=0;i<wide/2;i++)//高度 
		{
			for(int j=0;j<wide;j++)//宽度 
			{
				pic[i][j+wide]=pic[i][j];//向右复制
				pic[i+(wide/2)][j+(wide/2)]=pic[i][j];//向下复制,因为要倒序输出 
				//cout<<pic[i][j];
			}
				//printf("\n");
		}
		wide*=2;//每次扩大两倍 
	}
	for(int i=(wide/2)-1;i>=0;i--)//高度 
	{
		for(int j=0;j<wide;j++)
			cout<<pic[i][j];
		printf("\n");
	
	}
	return 0;
	 
}
/*
4
/__\
 /\
/__\/__\
 /\  /\
  /__\
   /\
   上面的图形其实不用管,因为这是三个for循环中第一个for循环
   接下来就是复制三次然后倒过来
/__\/__\/__\/__\
 /\  /\  /\  /\
  /__\    /__\
   /\      /\
    /__\/__\
     /\  /\
      /__\
       /\




4
               /\
              /__\
             /\  /\
            /__\/__\
           /\      /\
          /__\    /__\
         /\  /\  /\  /\
        /__\/__\/__\/__\
       /\              /\
      /__\            /__\
     /\  /\          /\  /\
    /__\/__\        /__\/__\
   /\      /\      /\      /\
  /__\    /__\    /__\    /__\
 /\  /\  /\  /\  /\  /\  /\  /\
/__\/__\/__\/__\/__\/__\/__\/__\
*/

   

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值