免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1993 | 回复: 6
打印 上一主题 下一主题

[算法] 问两道算法题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-13 21:41 |只看该作者 |倒序浏览
1.沿着长安街停了了一排汽车,你手中有一个车牌,而且你站在长安街的中心,怎么查到你手中车牌对应的车子(车子上有牌照 ),设计一个你认为较优的算法,并给出算法复杂度。
约束条件:a.只有你一个人,只能走着去看车牌照;b.假设长安街无限长,所以不能单独走一边

2.现在有一个rand(n)输出 [1,n]之间的integer, 现在我有一个array里放了10个cd,调用一次rand函数会产生一个值,就将相应的cd播放一次,现在让你设计一个算法使得每个cd被放第二遍之前其他的cd都要放一遍,而且是随机的播放.

论坛徽章:
0
2 [报告]
发表于 2008-12-13 23:22 |只看该作者
原帖由 cjaizss 于 2008-12-13 22:42 发表
1.往左走长度a1
2.往右走长度a2
3.往左走长度a3
....
直到找到
a(n+1)=b^n*a(n)
b可以取2,越大越好
第二道,
数组a[1:10]初始为0
以下循环10次:
取x=rand(10)
如果a[x]为0,则设a[x]为1,播放这个cd,并 ...

第一题的答案有什么优点么?我没看明白。
第二题的答案如果是我也会这么想的。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
3 [报告]
发表于 2008-12-13 23:27 |只看该作者
原帖由 FuriousFive 于 2008-12-13 23:22 发表

第一题的答案有什么优点么?我没看明白。
第二题的答案如果是我也会这么想的。

a1
a2
a3
a4
a5
...
这是每次走的距离,每次方向和上次相反
数列{bn}
bn=a(n+1)/an
{bn}是越高阶的无穷大,那么效率越好(也就是总体走的路越少)

论坛徽章:
0
4 [报告]
发表于 2008-12-14 01:20 |只看该作者

回复 #2 cjaizss 的帖子

觉得你第二道题的算法第一次选择是平均分配。
但是第一次以后的选择就不是完全随机的了,紧挨在被选中歌曲后面的歌曲有更高的概率被选中。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
5 [报告]
发表于 2008-12-14 01:34 |只看该作者
原帖由 Roemer 于 2008-12-14 01:20 发表
觉得你第二道题的算法第一次选择是平均分配。
但是第一次以后的选择就不是完全随机的了,紧挨在被选中歌曲后面的歌曲有更高的概率被选中。

是的,我已经说明了,不同的排列被选中的概率是不同的,并非平均分布,但这个算法很快.

论坛徽章:
0
6 [报告]
发表于 2008-12-14 02:46 |只看该作者
第二题这样应该更快, 而且是随机的. 伪代码:

  1. CD array[10] = ........;

  2. while(1){
  3.     int i;
  4.     CD tmp[10];
  5.     copy(tmp, array);
  6.     for(i=0;i<10;i++){
  7.         int j = rand(10-i);
  8.         playcd(tmp[j]);
  9.         tmp[j]= tmp[10-i];
  10.     }
  11. }
复制代码

[ 本帖最后由 baicj 于 2008-12-14 02:52 编辑 ]

论坛徽章:
1
天秤座
日期:2014-04-27 07:42:20
7 [报告]
发表于 2008-12-14 06:57 |只看该作者
第二题:产生1-10的随机数,写入数组p(1),再次产生1-10随机数,与数组中存在的数比较,如存在,继续产生随机数,如无,写入数组p(2),直到数组p(10)写满。然后按数组播放。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP