题解 | #圣诞树#

圣诞树

https://www.nowcoder.com/practice/9a03096ed8ab449e9b10b0466de29eb2?tpId=290&tqId=309117&ru=%2Fexam%2Foj&qru=%2Fta%2Fbeginner-programmers%2Fquestion-ranking&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E8%25AF%25AD%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D290

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        //可以把圣诞树分成两部分,即根与叶子
        //叶子层,不难看出每n层的每行按1,2,3...n递增
        Scanner in = new Scanner(System.in);
        int h = in.nextInt(); //树的高
        int n = 3; //阶数
        int space = n * h - 1; //前置空格数,逐行递减
        //count用来控制每n层的输出内容个数递增
        int count = 1;
        for (int i = 0; i < n * h; i++, count++, space--) {
            //每n层开始时,置count = 1
            if (count == n + 1) {
                count = 1;
            }
            //输出前置空格
            for (int j = 0; j < space; j++) {
                System.out.print(" ");
            }
            //每行"* "的个数为 i / n
            for (int j = 0; j <= i / n; j++) {
                for (int k = 0; k < count; k++) {
                    System.out.print("* ");
                }
                for (int k = n - count; k > 0; k--) {
                    System.out.print("  ");
                }
            }
            System.out.println();
        }
        //根层
        for (int i = 0; i < h; i++) {
            //先打印空格,打印完再输出*
            for (int j = 0; j < n * h - 1; j++) {
                System.out.print(" ");
            }
            System.out.println("*");
        }
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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