锁定老帖子 主题:(ACM系列之一)从简单开始
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-05
用java写?估计过几天你就会发帖问为什么总是TLE了...
|
|
返回顶楼 | |
发表时间:2011-04-05
看见ACM了进来瞄一下,貌似不适合这个版块。
|
|
返回顶楼 | |
发表时间:2011-04-05
IcyFenix 写道 珠海的……BNUZ?
在JE中贴算法的帖子,很难引起关注的。去各大OJ站的讨论版玩吧。 +1 去poj吧 |
|
返回顶楼 | |
发表时间:2011-04-06
高等数学。。。。。。。
|
|
返回顶楼 | |
发表时间:2011-04-06
记得ACM里面有的算法题很精辟啊
有一道题后面添加的条件是: 程序运行时间必须小于1S(java必须小于2S) 如果追求算法上的效率,使用java就勉强了。 即便你实现了,由于算法上的复杂性,你的代码可维护性和阅读性就大大降低了 |
|
返回顶楼 | |
发表时间:2011-04-06
用java是完全没有问题的,本人有大量实践。楼主不必与人云亦云的一般见识。
|
|
返回顶楼 | |
发表时间:2011-04-06
迭代么,呵呵
|
|
返回顶楼 | |
发表时间:2011-04-06
动态规划会好一些吧。
|
|
返回顶楼 | |
发表时间:2011-04-06
最后修改:2011-04-06
楼主,你的思路明显是有问题的,在对于n%49没有任何依据,你先写一个没有优化的算法对你这个优化的进行检证就会发现在n>49的时候就错误了~
1.从这个等式你就可以看书f(n)依赖的是f(n-1)和f(n-2),而对于你摸49比如f(50)变成了 依赖f(1) f(0)了,你能证明f(1) f(0)和 f(49) f(48)相等么? 2.当n=49时,n%49=0 你的循环直接跳出了 ,这个代码本身是有逻辑错误的~ 我的测试代码如下~在n<49时 均正确 def c1(a,b,n): if n==1 or n==2: return 1 left = 1 right = 1 r = 0 for i in xrange(2,n%49): r = (a*left + b*right)%7 left,right = r,left return r def c2(a,b,n): if n==1 or n==2: return 1 left = 1 right = 1 r = 0 for i in xrange(2,n): r = (a*left + b*right)%7 left,right = r,left return r def main(): for n in range(3,55): print "%d:"%n,c2(2,2,n),c1(2,2,n) |
|
返回顶楼 | |
发表时间:2011-04-06
解循环的条件是
存在 连续的解x,y 使得: x == n-2 且 y== n-1 因为 x 取值为0-6, y也为0-6,则xy组合的可能为49种 根据抽屉原理,当n == 50时,必然至少存在一次循环 因此,通过0-49的遍历,首先找出循环点,然后根据n的大小确定循环中的解 |
|
返回顶楼 | |