SDNU 1307.JY的分形绘画室 递归 打印图形

本文介绍了分形图形的概念,特别是那些由递归定义的图形。以一个每一层由3个下一层图形组成为例,挑战读者实现编程绘制简单版本。题目要求根据输入的正整数N递归打印出相应层数的图形。提供了AC代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1307.JY的分形绘画室

Description

JY的完美绘画教室~

今天要教的是分形图形,它是一类递归定义的图形,在这里举一个例子。



这个图形的每一层都由3个下一层的图形拼凑而成,现在我们可以编程来画一个简单的版本,你能实现吗?


Input

一个正整数N, 1<=n<=10,表示规模(具体意义见样例)。


Output

图形,具体见样例。


Sample Input

3

Sample Output

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

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



    题目中文,没什么多说的,输入几就打印出来几层就行,写一个递归函数打印出来就好,貌似这题数据很水看着之前有人交的73B就通过了= =算了,不去试水了,还是老实递归吧。

    下面AC代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<math.h>
using namespace std;
char a[2050][1030];

int out(int n,int x,int y)
{
    if(n==1)
    {
        a[x][y]=' ';
        a[x][y+1]='/';
        a[x][y+2]='\\';
        a[x][y+3]=' ';
        a[x+1][y]='/';
        a[x+1][y+1]='_';
        a[x+1][y+2]='_';
        a[x+1][y+3]='\\';
        return 0;
    }
    int s=pow(2,n-1);
    int e=pow(2,n-1);
    out(n-1,x,y);
    out(n-1,x+s,y+e);
    out(n-1,x+s,y-e);
    return 0;
}

int main()
{
    int n;
    int i;
    while(scanf("%d",&n)!=EOF)
    {
        memset(a,' ',sizeof(a));
        int s=pow(2,n);
        int e=pow(2,n+1);
        out(n,0,e/2-1);
        //cout<<s<<" "<<e<<endl;
        for(i=0;i<s;i++)
        {
            a[i][e+1]='\0';
        }
        for(i=0;i<s;i++)
        {
             cout<<a[i]<<endl;
        }
    }
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值