华为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在线答疑。

相关推荐
zbtlink10 分钟前
从 DDR4 颗粒到路由器价签:一轮存储涨价的三层传导与复算
网络·网络安全·智能路由器
薛之谦_15 分钟前
JD Hotkey 项目实战:京东开源的热点探测与秒杀系统
java·安全
tellmewhoisi1 小时前
深度学习8:神经网络学习5:随机梯度下降法(基本概念,基本原理)
深度学习·神经网络·学习
Canmag 兴隆磁性10 小时前
中大型钕铁硼产品的磁通测量与自动分选:一条产线自动化的工程实现思路
运维·学习·自动化·永磁材料
福建佰胜张工10 小时前
SMC 薄型气爪 MHF2-16D1 深度解析:平行开闭、低剖面结构在自动化装配中的选型与落地
java·服务器·安全·自动化
catoop10 小时前
API Key 设计与安全生成方案:结构拆解、数据库设计与 Java 实现
java·数据库·安全
小黄人软件12 小时前
桌面需要整理吗?有工具自动分类
学习
老衲不用@飘柔13 小时前
SFP与SFP+学习知识整理
学习
X54先生(人文科技)13 小时前
社会嵌入式终身学习机器与修复时代-ELR架构和技术演化探讨
人工智能·深度学习·学习·架构·开源协议
电子云与长程纠缠13 小时前
UE5魂系游戏开发教程05
开发语言·学习·游戏·ui·ue5