华为OD机试统一考试D卷C卷 - 螺旋数字矩阵
题目描述
疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法: 给出数字个数n和行数m(0 < n ≤ 999,0 < m ≤ 999),从左上角的1开始,按照顺时针螺旋向内写方式,依次写出2,3...n,最终形成一个m行矩阵。 小明对这个矩阵有些要求:
- 每行数字的个数一样多
- 列的数量尽可能少
- 填充数字时优先填充外部
- 数字不够时,使用单个*号占位
输入描述
输入一行,两个整数,空格隔开,依次表示n、m
输出描述
符合要求的唯一矩阵
用例1
输入:
9 4
输出:
1 2 3
* * 4
9 * 5
8 7 6
说明:
9个数字写成4行,最少需要3列
用例2
输入:
3 5 输出:
1
2
3
*
*
说明:
3个数字写5行,只有一列,数字不够用*号填充
Java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt(); // 读取要填充的数字个数n
int m = scanner.nextInt(); // 读取矩阵的行数m
scanner.close(); // 输入完毕后关闭scanner
int cols = (int) Math.ceil(n / (double) m); // 计算矩阵的列数
int[][] matrix = new int[m][cols]; // 创建一个整型矩阵,默认初始化为0
int num = 1; // 用于填充的数字从1开始
int top = 0, bottom = m - 1, left = 0, right
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2024华为OD机试题库D卷 文章被收录于专栏
本专栏给大家提供了华为2024最新华为OD(D)卷的题目汇总。华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。