一道面试题
用循环写出下列放阵:
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
到现在还没想出来 ?请大家帮个忙
用循环写出下列放阵:
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));
}
这个挺有意思的,蛇阵,我比较喜欢玩这类游戏,但是做为数学要求不高的行业软件来说没必要问这个实现了,他应该直接给个实现让人调用,下面我给个实现,当然还有更优秀更快速的实现:
|
谢谢
强人!!!!!!
谢谢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:
太麻烦了,喜欢简单,利用三角形边运算,
我的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();
}
}
}