一个倔强的人,螺旋数组
来源:互联网 发布:js实现页面跳转 编辑:程序博客网 时间:2024/04/29 00:52
/* * 1 2 3 4 5 * 16 17 18 19 6 * 15 24 25 20 7 * 14 23 22 21 8 * 13 12 11 10 9 * 思路: * 这个矩阵,可以理解成,不撞南墙不调头,一直走到一条死胡同里, * * 定义一个二维数组记录每次行走的过程,而每次转弯之后都在同行或同列进行 * ,走过的地方不能在走,直到它上不能走下不能走,左不能走,右不能走。 * 即正好填满整个二维数组。 * 我的 * for(;i<arr.length-1;i++){ * if(arr[j][i+1]!=0){ * break; * } * arr[j][i]=count; * count++; * } * * 或者递增 * 0 1 2 3 4 * -------------- * 1 2 3 4 5 | 0 * 6 | 1 * 7 | 2 * 8 | 3 * 9 | 4 * 这是我们从里层四个小循环的思路。 * * * 我们知道一个这个数组是递增,每次的增涨值是一, * 而这个数组正好是N×N的方形矩阵,最大 * 值就是N×N 那么这就是我们的大循环的边界。 * 我们可以理解成 行号不变长值是 * * 从左至右 * 行号不变 列号自减 * 从上倒下 号不变 * */public class Day_04_5 { void fun(int num){ int[][] arr = new int[num][num]; int i = 0; // 列号,控制 int j = 0;// 行号,控制 int count = 1; while (count < num*num) { // 右 控制j不变 i自增 for (; i < arr.length - 1; i++) { if (arr[j][i + 1] != 0) { break; } arr[j][i] = count; count++; } // 下 控制i不变 J自增 for (; j < arr[i].length - 1; j++) { if (arr[j + 1][i] != 0) { break; } arr[j][i] = count; count++; } // 左 控制j不变 i自减 for (; i > 0; i--) { if (arr[j][i - 1] != 0) { break; } arr[j][i] = count; count++; } // 上 控制i不变 j自减 for (; j > 0; j--) { if (arr[j - 1][i] != 0) { break; } arr[j][i] = count; count++; } arr[j][i] = count; // count++; } for (int x = 0; x < arr.length; x++) { for (int k = 0; k < arr[x].length; k++) { System.out.print(arr[x][k] + "\t"); } System.out.println(); } } public static void main(String[] args) { new Day_04_5().fun(5); }}
0 0
- 一个倔强的人,螺旋数组
- 生成一个螺旋数组
- 螺旋打印一个二维数组
- 螺旋数组的输出
- 一个二维数组以顺时针螺旋的方式打印出来
- 螺旋输出一个方形的二维数组<java版>
- Java 螺旋数组的实现方式-一个循环实现哦
- c#简单实现一个螺旋数组
- 思考 人生的倔强
- 我们倔强的青春
- 倔强的感觉
- 【练习1】输出一个螺旋数组,可以很好地理解数组和指针的使用
- 一个螺旋矩阵的类
- 一个螺旋矩阵的类
- 倔强
- 倔强
- 倔强
- 倔强
- netty 学习 (2)Handler的执行顺序
- netty 学习 (3)发送对象
- netty 学习 (4)混合使用coder和handler
- 黑马程序员 日记(四)
- Netty 5用户指南
- 一个倔强的人,螺旋数组
- 我怎么就带这几个冤家过河呢
- 数组数组求第K小数
- java基础 变量运算符
- 黑马程序员 日记(五)
- Codeforces Gym 100637A A. Nano alarm-clocks 前缀和的利用
- 反思,目标,我来了
- C# WinForm程序退出的方法
- HDU2852