- 最后登录
- 2013-11-11
- 在线时间
- 873 小时
- 阅读权限
- 40
- 注册时间
- 2008-9-15
- 积分
- 1194
- 帖子
- 924
- 精华
- 6
- UID
- 44804
- 性别
- 保密
- 积分
- 1194
- 帖子
- 924
- 精华
- 6
- UID
- 44804
- 性别
- 保密
|
用金眼睛的算法精神,我设计了一下,发现算出结果要20分钟。
而金眼睛只需要2分钟,不知如何实现的。
我估计一下时间。
金眼睛的算法,z没有优化,x优化后节约时间约4倍。
所以总共节约时间4倍。
我的算法,按理论讲,应该节约34倍时间,应该速度更快,但苦于事先需设定搜索范围,范围设小了,搜寻不到结果,范围设大了,又浪费时间。
我想了一个办法,改变循环进行的次序,既能理论上节约34倍时间,又不用事先设定范围。大家看看有没道理。
原先:
X=17*i+p , Y=17*j-p p=0 to 8
两个嵌套for 循环
for i=0 to m m为事先设定的范围。
for j=1 to m
......
next j
next i
-------------------------------------------
修改为:
X=17*i+p , Y=17*j+17-p p=0 to 8
m=0 ‘m为i和j之间的最大值
do while true
i=m ’i先固定为m
for j=0 to m
...... ‘j 从小到大循环
next j
j=m ’j再固定为m
for i=0 to m-1
...... ‘i从小到大循环
next i
m=m+1 ’m逐渐增加
loop
-------------------------------------------------------------------------
重新运行程序, 花费407秒得出结果,不到7分钟时间。 |
|