一道面试题

用循环写出下列放阵:

1 2 6 7 15
3 5 8 14 16
4 9 13 17 22
10 12 18 21 23
11 19 20 24 25

到现在还没想出来 ?请大家帮个忙

是让我们做算术题还是软件呢?是数学面试还是程序面试,我认为是数学面试,因为如果是程序面试的话,没有看到程序的需求,或者说没有详细的需求,我都不知道这些数字是如何打印出来的。

越是好的软件的就越容易让人一看就明白,不是猜谜语,脑筋急转弯。不要到出这种试题的公司去考试,都是远离OO,数学思维的一些人把持的公司。

for(int i=1;i<=9;i++){
out.println(5*(i/5)+(i%5)*(i/5>0?-1:1));
}

这个挺有意思的,蛇阵,我比较喜欢玩这类游戏,但是做为数学要求不高的行业软件来说没必要问这个实现了,他应该直接给个实现让人调用,下面我给个实现,当然还有更优秀更快速的实现:


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;
}
}
}

使用的时候,比如楼主给出的例子,造个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修改过]

谢谢
强人!!!!!!

谢谢banq老师的指点 :)

哈哈,仔细一看,还是有规律的.斜线递增


是我我就直接放弃

本人是 java 初学者,刚发现这个网站,还不错。
对于 LZ 的题,本人写了段实现代码,见附件。
说明:扩展至矩形,如 11 行 7 列,运行如:
1 2 6 7 15 16 28
3 5 8 14 17 27 29
4 9 13 18 26 30 42
10 12 19 25 31 41 43
11 20 24 32 40 44 56
21 23 33 39 45 55 57
22 34 38 46 54 58 67
35 37 47 53 59 66 68
36 48 52 60 65 69 74
49 51 61 64 70 73 75
50 62 63 71 72 76 77


[该贴被rotiwen于2008-11-04 00:44修改过]
attachment:


src.rar

太麻烦了,喜欢简单,利用三角形边运算,
我的MSN: zwx_yal@yahoo.com.cn
public class Test {
public static void main(String[] args) {
for(int i=0;i<5;i++) {
for(int j=0;j<5;j++){
boolean bl = (i+j < 5);
int x = bl ? i:4-i;
int y = bl ? j:4-j;

int m = 0;
for(int n=0;n<=x+y;n++) m+= n;
if((x+y)%2==0) {
m+=y+1;
} else {
m+=x+1;
}
if(!bl) m = 26 - m;

System.out.print(m);
if(j!=4) System.out.print(",");
}
System.out.println();
}
}
}