问题描述
疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法:
给出数字个数n和行数m(0 < n ≤ 999,0 < m ≤ 999),从左上角的1开始,按照顺时针螺旋向内写方式,依次写出2,3...n,最终形成一个m行矩阵。
小明对这个矩阵有些要求:
1.每行数字的个数一样多
2.列的数量尽可能少
3.填充数字时优先填充外部
4.数字不够时,使用单个*号占位
输入描述
两个整数,空格隔开,依次表示n、m
输出描述
符合要求的唯一矩阵
示例 1
输入 9 4
输出
1 2 3
* * 4
9 * 5
8 7 6
说明
9个数字写成4行,最少需要3列
示例 2
输入 3 5
输出
1
2
3
*
*
解题思路
分析得出矩阵中的数字按照顺时针的方向递增,从矩阵的左上角开始,沿矩阵外围填充。输入要求显示最大的数,规定了最大的行数,只要确定列数即可。列数由行数影响,大于或等于最大数的整除行数可得列数。矩阵中的数按照从左到右,从上到下,然后从右到左,最后由下到上,循环执行这四个步骤,直到布满整个矩阵(关键在于每次执行一个步骤,行或者列都会减一)。类似下图:
