题解 | #超级圣诞树#

超级圣诞树

https://www.nowcoder.com/practice/470d26c9a73e4e17be8cc45cac843423

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    int n;
    while (cin >> n) { 
        int i=0,j=0,k=0;
        int x=3*pow(2,(n-1));
        int h=x+n,w=2*x-1; //图形的高度与宽度。
        int c=x-1;//中心列的下标;
        char p[h][w];//定义画布;
        for(i=0;i<h;i++)//初始化画布;
        {
            for(j=0;j<w;j++) p[i][j]=' ';
        }
        for(i=x;i<h;i++) p[i][c]='*';//绘制树干
        for(i=0;i<3;i++)
        {
            p[i][c-i]='*';
            p[i][c+i]='*';
        }
        p[2][c]='*';//上面的部分绘制初始三角形在画布的最上方中间。
        for(i=1;i<n;i++)//开始递归
        {
            int t=3*pow(2,i-1);//上半部分的行数;
            for(j=0;j<t;j++)//开始绘制下半部分
            {
                for(k=c-j;k<=c+j;k++)
                {
                    p[t+j][k-t]=p[j][k];//复制到左下
                    p[t+j][k+t]=p[j][k];//复制到右下
                }
            }
        }
        for(i=0;i<h;i++)//打印图形
        {
            for(j=0;j<w;j++) cout<<p[i][j];
            cout<<endl;
        }
    }
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 15:37
点赞 评论 收藏
分享
06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
昨天 13:37
重庆大学 C++
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务