优美三角剖分(递归)

2713: 优美三角剖分

时间限制: 1 Sec   内存限制: 64 MB
提交: 20   解决: 5
[ 提交][ 状态][ 讨论版]

题目描述

 小X同学为了搞好和小C同学的关系,特意寻找了一些优美的图像作为礼物。
这是一些由无穷无尽三角形组成的极为优美的图形,小X同学很想实现这些极富美感的图形,但是作为一名初赛都未过的伪退役选手,他水平有限,于是这个艰巨的任务就落在你们身上了。
由于好心的出题人,数据范围n<=10。
   (具体图形详见样例,每一阶图形都是由3个上一阶图形拼成的)

输入

只有一行,输入一个整数为N,表示要求出N阶的图形。

输出

输出相应的图形。

样例输入

3

样例输出

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

提示

来源


找规律,题目已经说了每一阶图形都是由3个上一阶图形拼成的,因此要递归的处理,或者一次将1~10的完整图形打出来存到数组里,最后根据n进行输出。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>

using namespace std;

int n;
char a[2049][2049];


void fun(int b){
    if(b==n){
        int wid = pow(2,n);
        for(int j=1;j<=pow(2,n);j++){
            for(int i=1024-pow(2,n)+1;i<=1024+wid;i++){
                printf("%c",a[j][i]);
            }
            puts("");
        }

    }else{
        for(int j=1;j<=pow(2,b);j++){
            for(int i=1024-pow(2,b)+1;i<=1024+pow(2,b);i++){
                int p=pow(2,b);
                a[j+p][i-p]=a[j][i];
                a[j+p][i+p]=a[j][i];
            }
        }
        fun(b+1);
    }
}

int main()
{

    while(~scanf("%d",&n)){
         memset(a,' ',sizeof(a));
        a[1][1024]='/';
        a[1][1025]='\\';
        a[2][1023]='/';
        a[2][1024]='_';
        a[2][1025]='_';
        a[2][1026]='\\';
        fun(1);
    }


    return 0;
}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值