南蛮图腾 (洛谷 P1498)

题目传送门

题目描述

自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着一种分形的效果,在得到了酋长的传授后,孔明掌握了不少绘图技术,但唯独不会画他们的图腾,于是他找上了你的爷爷的爷爷的爷爷的爷爷……帮忙,作为一个好孙子的孙子的孙子的孙子……你能做到吗?

输入格式

每个数据一个数字,表示图腾的大小(此大小非彼大小) n<=10

输出格式

这个大小的图腾

输入输出样例

输入 #1

2

输出 #1

   /\
  /__\
 /\  /\
/__\/__\

输入 #2

3

输出 #2

       /\
      /__\
     /\  /\
    /__\/__\
   /\      /\
  /__\    /__\
 /\  /\  /\  /\
/__\/__\/__\/__\
#include<bits/stdc++.h>
using namespace std;
char a[3000][3000];    //数组开大一点
void work(int n,int x,int y){    //用一个无返回值的,方便一点
	if(n==1){    //递归出口,画一个基础的三角形
        a[x][y]='/';
        a[x-1][y+1]='/';
        a[x][y+1]='_';
        a[x-1][y+2]='\\';    //注:一个反斜杠会出现错误,详情见后
        a[x][y+2]='_';
        a[x][y+3]='\\'; 
        return;     //无返回值函数,细节
    }   
    //递归
	work(n-1,x,y);
    work(n-1,x-(1<<(n-1)),y+(1<<(n-1)));
    work(n-1,x,y+(1<<n));    //位左移,详情见后
}
int n;
int main(){
	cin>>n;
	memset(a,' ',sizeof a);    //将所有变量赋值为空格
    work(n,1<<n,1); 
    for(int i=1;i<=(1<<n);i++){
        for(int j=1;j<=(1<<n)*2;j++){
            cout<<a[i][j];     //输出
        } 
        cout<<endl;
    }
	return 0;
}

 最基础的三角形:

 问:为什么一个反斜杠会出现错误?

答:字符及字符数组(字符数组篇)。一个反斜杠是转义字符哦~

 

 问:什么是位左移?

答:运算符优先级(c++)(1~8级)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值