输出结果
Java实现方式
package learnbase;
public class Thinking {
public static void main(String[] args) {
int max = 120 ;
double sqrt = Math.sqrt(max);
int rows = (sqrt % 1 == 0 ? (int ) sqrt : (int ) sqrt + 1 );
int [][] data = new int [rows][rows];
int count = 1 ;
int num = 1 ;
int lastRow = (rows + 1 ) / 2 - 1 ;
int lastCol = lastRow;
data[lastRow][lastCol] = 1 ;
boolean forward = true ;
outter: while (true ) {
if (forward) {
for (int i = 0 ; i < count ; i++) {
data[lastRow][++lastCol] = ++num;
if (num == max) {
break outter;
}
}
for (int i = 0 ; i < count ; i++) {
data[++lastRow][lastCol] = ++num;
if (num == max) {
break outter;
}
}
} else {
for (int i = 0 ; i < count ; i++) {
data[lastRow][--lastCol] = ++num;
if (num == max) {
break outter;
}
}
for (int i = 0 ; i < count ; i++) {
data[--lastRow][lastCol] = ++num;
if (num == max) {
break outter;
}
}
}
forward = !forward;
count ++;
}
for (int i = 0 ; i < rows; i++) {
for (int j = 0 ; j < rows; j++) {
System.out.print(data[i][j] + " " );
}
System.out.println("" );
}
}
}