如下图所示的N*N数组,用Java编写代码,要以N为入口??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 螺旋数组!呵呵 很久前有写过一个:import java.util.Scanner;public class LXArray { public static void main(String[] args) { System.out.println("请输入数组的维数:"); Scanner sc = new Scanner(System.in); int num = sc.nextInt(); if (num <= 0 || num > 20) throw new RuntimeException("Format Error!"); helixArray(num); } private static void helixArray(int n) { int[][] arr = new int[n][n]; int i = 0, j = 0; int index = 1; arr[i][j] = 1; while (index < n * n) { while ((j + 1) < n && arr[i][j + 1] == 0) arr[i][++j] = ++index; while ((i + 1) < n && arr[i + 1][j] == 0) arr[++i][j] = ++index; while ((j > 0) && arr[i][j - 1] == 0) arr[i][--j] = ++index; while ((i > 0) && arr[i - 1][j] == 0) arr[--i][j] = ++index; } for (int k = 0; k < arr.length; k++) { for (int h = 0; h < arr[k].length; h++) { if (arr[k][h] < 10) System.out.print(" "); System.out.print(arr[k][h] + " "); } System.out.println(); } }}结果:请输入数组的维数:5 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 把四个方向的关系用笔写出来就好了,数组下标从0开始:右:[i, i][i, n-i-1]下:[i+1, n-i-1][n-i-1, n-i-1]左:[n-i-1, n-i-1-1], [n-i-1, i]上:[n-i-1-1, i][i+1, i] 这么快就有答案啊。。有效率。。我的那个头像是GIF格式的图片。。你上传一个GIF格式的图片就行了。。不过。。我自己看。。也没看到会动啊。。郁闷了。。 得到彼此位数上的数字不相同的三位数的所有组合 java 连接 oracle 11g的问题 各位大大给我看一下,为什么调用不到B的方法 科学计数法5,123.89 如何格式化回5123。89(除了用replace外)? 如何将application转化成applet 图像文件如何复制??? 在一个文件中查找一字符串,在该串后面插入一字符串该怎样处理? 使用JMF需要安装插件吗?? 请问有关过载和重载的问题? 谁知道国内那有borland的appserver下载(国外的去不了) 线程同步synchronized问题 求解释
呵呵 很久前有写过一个:import java.util.Scanner;public class LXArray {
public static void main(String[] args) {
System.out.println("请输入数组的维数:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
if (num <= 0 || num > 20)
throw new RuntimeException("Format Error!");
helixArray(num);
} private static void helixArray(int n) {
int[][] arr = new int[n][n];
int i = 0, j = 0;
int index = 1;
arr[i][j] = 1;
while (index < n * n) {
while ((j + 1) < n && arr[i][j + 1] == 0)
arr[i][++j] = ++index;
while ((i + 1) < n && arr[i + 1][j] == 0)
arr[++i][j] = ++index;
while ((j > 0) && arr[i][j - 1] == 0)
arr[i][--j] = ++index;
while ((i > 0) && arr[i - 1][j] == 0)
arr[--i][j] = ++index;
} for (int k = 0; k < arr.length; k++) {
for (int h = 0; h < arr[k].length; h++) {
if (arr[k][h] < 10)
System.out.print(" ");
System.out.print(arr[k][h] + " ");
}
System.out.println();
} }
}结果:
请输入数组的维数:
5
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
右:[i, i][i, n-i-1]
下:[i+1, n-i-1][n-i-1, n-i-1]
左:[n-i-1, n-i-1-1], [n-i-1, i]
上:[n-i-1-1, i][i+1, i]
我的那个头像是GIF格式的图片。。你上传一个GIF格式的图片就行了。。
不过。。我自己看。。也没看到会动啊。。郁闷了。。