精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2007-06-11
longrm 写道 引用 10人的话: 最多可以多少场? 1,1,1,1,1,1,1,1,1,1 这样每个人都要与其它人踢。。。 10+9+8+7+6+5+4+3+2+1= 2,1,1,1,1,1,1,1,1 这样只会少一场。。。就是第一队中的两个人不用互踢 10+9+8+7+6+5+4+3+2= 这个好像错了,自己是不会和自己踢的 1,1,1,1,1,1,1,1,1,1 场数应该是9+8+7+6+5+4+3+2+1= ...... 终于发现写代码时有个bug改了又改,就是不合理, 发现原来这个原因。。。 PS:由于有测试用例。。。。一点点改 终于写出如下的代码,但这么写对于我的构想只是MS正确而已 public int maxImpossable(int poples){ if(poples==2){ return 1; }else if(poples<1){ return 0; } poples--; return maxImpossable(poples)+poples;//这里的+poples的解释很头痛 } |
|
返回顶楼 | |
发表时间:2007-06-11
皑皑,当时我比赛的时候做这个题用的是分类搜索,结果只通过3个数据集.
|
|
返回顶楼 | |
发表时间:2007-06-11
Eastsun 写道 皑皑,当时我比赛的时候做这个题用的是分类搜索,结果只通过3个数据集. 楼上把所有的数据集都给出来试试。。。
|
|
返回顶楼 | |
发表时间:2007-06-11
这个我咋知道哩,是由baidu来测试的.
不过我对我现在的算法很有信心,得到的结果应该是没问题的. |
|
返回顶楼 | |
发表时间:2007-06-11
又问了几个人,发现还是有看不懂的画个图看看还有没有进步
得出结论,如果两个小组合并为一个的话, 总场次数=原场次数 -(减去) 两小组之间的场次数 两个小组之间的场次数为两个小组人数相乘。(2,3)总场次数为6场。 |
|
返回顶楼 | |
发表时间:2007-06-11
其实我也没仔细看楼主的代码,不过楼主的话到让我有了看楼主代码的兴趣.
let me 瞧瞧,o(∩_∩)o... |
|
返回顶楼 | |
发表时间:2007-06-11
如果只是为了得出结论上周四我就完成了。。。
我只是想把想法试着讲给四个人听, 现在还有一个不懂。。。。 正在努力中。。。。 由于语文能力有限, 浪费了很多口舌, 用图一次完成了。。。二个人的理解。 如果想看明白代码的朋友先可以运行一下main方法, 之后改动people的值来看看其工作流程 再看junit的测试方法, 我写的顺序与编码顺序是一样的, 如果能理解测试用例之后再看代码。 代码为了能看明白没用经典数学公式。 一句话,只是让别人看明白的代码段。。。 |
|
返回顶楼 | |
发表时间:2007-06-11
话说看别人写的代码还真是件很痛苦的事情,尤其涉及到算法....
不过觉得楼主的代码还有优化的余地. 比如" public int maxImpossable(int poples){ if(poples==2){ return 1; }else if(poples<1){ return 0; } poples--; return maxImpossable(poples)+poples; } 其实由代码已经可以推导出maxImpossable( poples) =poples*(poples-1)/2 这样就可以将时间复杂度为O(N)的方法降低到O(1)了. 再看看,看不懂就不看了. |
|
返回顶楼 | |
发表时间:2007-06-11
另外,为什么不直接建立一个List<Integer>而要弄个List<String>,搞得后面还要解析一次?
|
|
返回顶楼 | |
发表时间:2007-06-11
Eastsun 写道 另外,为什么不直接建立一个List<Integer>而要弄个List<String>,搞得后面还要解析一次?
1.4是客户服务器的主流配置, 虽然我有1.5,为了防止我要教的人不会因为版本问题调程序 只要写1.4的方式,可以少考虑很多问题。。。 引用 其实由代码已经可以推导出maxImpossable( poples) =poples*(poples-1)/2
如果对方不记得Sn(n) 的公式,又是一堆口水。。。。 我认为用java开发就用java来思考, 用所能用的最好理解的方式, 用代码说出思考的过程。 |
|
返回顶楼 | |