题解 | 超级圣诞树

超级圣诞树

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;
}

全部评论

相关推荐

昨天 18:09
门头沟学院 Java
点赞 评论 收藏
分享
06-10 21:15
门头沟学院 Java
宁阿:好多这种没🧠的公司,他们估计都不知道毕业的人不能给安排实习岗
实习吐槽大会
点赞 评论 收藏
分享
陆续:不可思议 竟然没那就话 那就我来吧 :你是我在牛客见到的最美的女孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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