一道面试题

08-10-13 Leons
用循环写出下列放阵:

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

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

              

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

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

virtualf
2008-10-13 17:18
for(int i=1;i<=9;i++){

out.println(5*(i/5)+(i%5)*(i/5>0?-1:1));

}

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

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修改过]

Leons
2008-10-13 23:24
谢谢

强人!!!!!!

猜你喜欢
2Go 1 2 下一页