题解 | #圣诞树#

圣诞树

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("*");
        }
    }
}

全部评论

相关推荐

Mush3r:1. 项目包装一下,比如说“跟某某电网/企业合作,已经实际交付”之类的,这样别人就觉得你至少是个实际的项目不是个玩具项目; 2. 对于 axios 这种工具,不要写“利用”,别人觉得是就是在调包,没什么技术含量,要写“重新封装”,可能实际上就是封装了一些 url 前缀之类的,但是听起来就更高级一点; 3. 结合缓存实现用户登陆,你作为前端是如何实现的?如何鉴权?token 过期如何设置?如何保证非登录用户不能访问页面/请求拦截器?一个都写没,前面这些都是面试会问的问题,但是面试官看了你这句话可能也不知道该问什么; 4. 利用 Vue3,通过 。。。 组件库,又是调包,这种没什么工作量,就是拿过来用一用的就不要往详情里写了,开头总结的时候提一嘴就行了; 后面小程序不怎么懂,不评价了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务