题解 | 超级圣诞树

超级圣诞树

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

#include <stdio.h>

int main() {
    int n = 0;
    scanf("%d", &n);
    int arr[400][800] = { {0,0,1,0,0}, {0,1,0,1,0},{1,0,1,0,1} };
    int i, j = 0, k, row = 3, col = 5;
    for (i = 2; i <= n; i++)
    {
        for (j = row; j < row * 2; j++)
        {
            for (k = 0; k < col; k++)
            {
                arr[j][k] = arr[j - row][k];//复制为左下角的三角形
                arr[j][k + col + 1] = arr[j][k];//再把左下角复制到右下角
            }
        }
        //因为最开始的三角形是靠近最左的,清空后再重新放置到左下和右下的中间
        //先清空
        for (j = 0; j < row; j++)
        {
            for (k = 0; k < col; k++) {
                arr[j][k] = 0;
            }
        }
        //放到中央
        for (j = 0; j < row; j++)
        {
            for (k = (col + 1) / 2; k < col + (col + 1) / 2; k++)
            {
                arr[j][k] = arr[j + row][k - (col + 1) / 2];
            }
        }
        //根据规律和递归思想
        row *= 2;
        col = col * 2 + 1;
    }
    //打印圣诞树
    for (i = 0; i < row; i++)
    {
        for (j = 0; j < col; j++)
        {
            if (arr[i][j] == 0)
            {
                printf(" ");
            }
            else
            {
                printf("*");
            }
        }
        printf("\n");
    }
    //打印树根
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j < row; j++)
        {
            printf(" ");//打印空格
        }
        printf("*\n");
    }
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 17:10
什么素质,我请问呢,要掉小珍珠了。。。又憋屈又生气
苍蓝星上艾露:给它们能的,一群dinner牛马挥刀向更弱者罢了。我写的开源求职AI co-pilot工具,优化你的简历,找到你匹配的岗位,定制你的简历,并让你做好面试准备https://github.com/weicanie/prisma-ai
点赞 评论 收藏
分享
07-05 16:23
门头沟学院 Java
mengnankk:我投了300,约了5 6个面试。感觉项目写的太多了。一个项目就写五六个亮点,不是把整个项目的功能描述下。其他的没啥,简历看起来有点长
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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