17 16 15 14 13
18 5 4 3 12
19 6 1 2 11
20 7 8 9 10
21 22 23 24 25
当n值不同时如何输出算法,JAVA
18 5 4 3 12
19 6 1 2 11
20 7 8 9 10
21 22 23 24 25
当n值不同时如何输出算法,JAVA
解决方案 »
- Eclipse断点疑问
- 如何在window下计算cpu和内存的占有量!!!
- 急问:jdk1.3中替代PrintWriter(fWriter, true)的方法~
- 为什么接收过来的是乱码?
- 用过eclipse的朋友看过来
- 【java -version】如果JDK安装正确
- 请Java大哥们进来一下!一个想学习Java的小辈想请问几个问题!
- 怎样将short转换为两个byte输出?并可以被还原为short?
- 什么是JAVAC编译器,哪里可以下载
- Javase,看视频自学,但是那么多类吗,怎么可能记得住!
- java多线程线程之间的控制问题
- Java Swing的JTable绘制setCellRenderer()和setCellEditor()的区别?
public static void main(String[] args){
System.out.println("请输入n,按回车完成输入:");
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[][] a = new int[n][n];
int max = n * n;
int row = 0, col = 0;
int direction = 0;
if (n%2==0) {
row = (n/2)-1;
col = (n/2)-1;
} else {
row = (n-1)/2;
col = (n-1)/2;
}
for (int i = 1; i <= max; i++) {
a[row][col] = i;
switch (direction) {
case 0:
if(i<max&&a[row+1][col+1]==0){
direction += 1;
direction %= 4;
}
col++;
break;
case 1:
if(i<max&&a[row+1][col-1]==0){
direction += 1;
direction %= 4;
}
row++;
break;
case 2:
if(i<max&&a[row-1][col-1]==0){
direction += 1;
direction %= 4;
}
col--;
break;
case 3:
if (i<max&&a[row-1][col+1]==0) {
direction += 1;
direction %= 4;
}
row--;
break;
default:
System.out.println("你进入了异度空间四边形你却找到了第五条边!");
System.exit(0);
}
}
String string = new String();
String mStr = String.valueOf(max);
for (int j = 0; j < n; j++) {
for (int k = 0; k < n; k++) {
string = String.valueOf(a[j][k]);
while(mStr.length()>string.length()){
string = "0"+string;
}
System.out.print(" "+string);
}
System.out.println("");
}
}
跟这贴差不多 自己多想想