2023-07-31 23:04阅读: 41评论: 0推荐: 0

回型数

/**
*
* 从键盘输入一个整数(1~20) ,则以该数字为矩阵的大小,把 1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。
*
* 例如: 输入数字2,则程序输出:
* 1 2
* 4 3
* 输入数字3,则程序输出:
* 1 2 3
* 8 9 4
* 7 6 5
* 输入数字4, 则程序输出:
* 1 2 3 4
* 12 13 14 5
* 11 16 15 6
* 10 9 8 7
*
* 解决思路1:
* 输入数字:len
* 行: i [0, len]
* 列:j [0, len]
* 值:m [1, len * len]
*
* 1、如何表示 上行 右列 下行 左列?
* 可以设置参数k。 k=1 k=2 k=3 k=4
*
* 2、不同 k 之间转换的边界条件?
* 1 2 3 4 5
* j >= len ,
* 则
* k = 2, i++, j-- m--(因为此时m = 5,下次循环赋值时又要m++,因此要m--)
*
* k = 3, k = 4, k = 1 之间转换条件类似
*
*
* 解决思路2(与 1 类似):
* 四个角分别为 minX minY maxX maxY 判断转角边界条件即可
*/
public class Test6 {
@Test
public void test1(){
//System.out.println("输入一个数字:");
//如果非数字,则报错(略)
//Scanner scanner = new Scanner(System.in);
//int len = scanner.nextInt();
int len = 4;
int[][] arr = new int[len][len];
//行 列
int i = 0, j = 0;
//行列转换
int k = 1;
for (int m = 1; m <= len * len; m++) {
if (k == 1){
if (j < len && arr[i][j] == 0){
arr[i][j++] = m;
}else {
k = 2;
i++;
j--;
m--;
}
}else if (k == 2){
if (i < len && arr[i][j] == 0){
arr[i++][j] = m;
}else {
k = 3;
i--;
j--;
m--;
}
}else if (k == 3){
if (j >= 0 && arr[i][j] == 0){
arr[i][j--] = m;
}else {
k = 4;
i--;
j++;
m--;
}
}else if (k == 4){
if (i >= 0 && arr[i][j] == 0){
arr[i--][j] = m;
}else {
k = 1;
i++;
j++;
m--;
}
}
}
for(int m = 0; m < arr.length; m++){
for(int n = 0; n < arr[m].length; n++){
System.out.print(arr[m][n] + "\t");
}
System.out.println();
}
}
}

思路2:

@Test
public void test2(){
int n = 7;
int[][] arr = new int[n][n];
int count = 0;
int minX = 0;
int minY = 0;
int maxX = n - 1;
int maxY = n - 1;
while (minX <= maxX){
//到右
for (int x = minX; x <= maxX; x++){
arr[minY][x] = ++count;
}
minY++;
//到下
for (int y = minY; y <= maxY; y++){
arr[y][maxX] = ++count;
}
maxX--;
//到左
for (int x = maxX; x >= minX; x--){
arr[maxY][x] = ++count;
}
maxY--;
//到上
for (int y = maxY; y >= minY; y--){
arr[minX][y] = ++count;
}
minX++;
}
//循环输出
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
String space = (arr[i][j]+"").length()==1 ? "0":"";
System.out.print(space+arr[i][j]+" ");
}
System.out.println();
}
}

本文作者:九落

本文链接:https://www.cnblogs.com/9fall/p/17595260.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   九落  阅读(41)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.