华为OD机试 - 数字反转打印(Java 2023 B卷 100分)

目录

华为OD机试 2023B卷题库疯狂收录中,刷题++点这里++

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

小华是个对数字很敏感的小朋友,他觉得数字的不同排列方式有特殊美感。某天,小华突发奇想,如果数字多行排列,第一行1个数,第二行2个,第三行3个,即第n行有n个数字,并且奇数行正序排列,偶数行逆序排列,数字依次累加。

这样排列的数字一定很有意思。聪明的你能编写代码帮助小华完成这个想法吗?规则总结如下:

a、每个数字占据4个位置,不足四位用""补位,如1打印为1**

b、数字之间相邻4空格。

c、数字的打印顺序按照正序逆序交替打印,奇数行正序,偶数行逆序。

d、最后一行数字顶格,第n-1行相对第n行缩进四个空格

二、输入描述

第一行输入为N,表示打印多少行;1<=N<=30

例如:

输入:2

三、输出描述

XXXX1****

3XXXX2

四、解题思路

  1. 第一行输入为N;
  2. 每个数字占据4个位置,不足四位用"*"补位;
  3. 数字之间相邻4空格
  4. 奇数行正序排列;
  5. 偶数行逆序排列;
  6. 最后一行数字顶格,第n-1行相对第n行缩进四个空格。

五、Java算法源码

java 复制代码
public static void main(String[] args) {
    // 处理输入
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int value = 1;

    for (int i = 0; i < n + 1; i++) {
        List<Integer> list = new ArrayList<>();
        for (int j = 0; j < i; j++) {
            list.add(value);
            value++;
        }

        StringBuilder builder = new StringBuilder();
        for (int j = 0; j < 4 * (n - i); j++) {
            builder.append(" ");
        }

        // 奇数行正序排列
        if (i % 2 == 1) {
            for (int j = 0; j < list.size(); j++) {
                StringBuilder sb = new StringBuilder(String.valueOf(list.get(j)));
                while (sb.length() < 4) {
                    sb.append("*");
                }
                builder.append(sb);
                builder.append("    ");
            }
            // 偶数行逆序排列
        } else {
            for (int j = list.size() - 1; j >= 0; j--) {
                StringBuilder sb = new StringBuilder(String.valueOf(list.get(j)));
                while (sb.length() < 4) {
                    sb.append("*");
                }
                builder.append(sb);
                builder.append("    ");
            }
        }
        System.out.println(builder.toString());
    }
}

六、效果展示

1、输入

5

2、输出

			  1***    
        3***    2***    
    4***    5***    6***    
10**    9***    8***    7***    

11** 12** 13** 14** 15**

3、说明

🏆下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

相关推荐
量子-Alex1 小时前
【多模态聚类】用于无标记视频自监督学习的多模态聚类网络
学习·音视频·聚类
吉大一菜鸡1 小时前
FPGA学习(基于小梅哥Xilinx FPGA)学习笔记
笔记·学习·fpga开发
WTT00111 小时前
2024楚慧杯WP
大数据·运维·网络·安全·web安全·ctf
爱吃西瓜的小菜鸡4 小时前
【C语言】判断回文
c语言·学习·算法
小A1594 小时前
STM32完全学习——SPI接口的FLASH(DMA模式)
stm32·嵌入式硬件·学习
群联云防护小杜4 小时前
如何给负载均衡平台做好安全防御
运维·服务器·网络·网络协议·安全·负载均衡
ihengshuai4 小时前
HTTP协议及安全防范
网络协议·安全·http
岁岁岁平安4 小时前
spring学习(spring-DI(字符串或对象引用注入、集合注入)(XML配置))
java·学习·spring·依赖注入·集合注入·基本数据类型注入·引用数据类型注入
武昌库里写JAVA4 小时前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计
qq_589568104 小时前
数据可视化echarts学习笔记
学习·信息可视化·echarts