回型数
/** * * 从键盘输入一个整数(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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步