这个挺有意思的,蛇阵,我比较喜欢玩这类游戏,但是做为数学要求不高的行业软件来说没必要问这个实现了,他应该直接给个实现让人调用,下面我给个实现,当然还有更优秀更快速的实现:
public class Z {
public static void solve(int array[][]) {
int N = array.length;
int row = 0;
int begin = 1;
int bevel = 0;
for (bevel = 0; bevel < 2 * N - 1; bevel++) {
if (!(bevel % 2 == 0))
for (row = 0; row < N; row++)
if ((bevel - row) >= 0 && (bevel - row) < N)
array[row][bevel - row] = begin++;
else
continue;
else
for (row = N - 1; row >= 0; row--)
if ((bevel - row) >= 0 && (bevel - row) < N)
array[row][bevel - row] = begin++;
else
continue;
}
}
}
<p>
|
使用的时候,比如楼主给出的例子,造个5*5的数组传进去求解再打印出来
Z.solve(b);
//论坛过滤[ i ]成斜体,换个名
for (int m = 0; m < N; m++) {
for (int j = 0; j < N; j++)
System.out.print(b[m][j] + "\t");
System.out.println();
}
[该贴被freebox于2008-10-13 18:49修改过]