易码技术论坛

 找回密码
 加入易码
搜索
查看: 239776|回复: 8

[源码] [讨论]约瑟夫问题讨论

[复制链接]
发表于 2006-6-17 14:23:00 | 显示全部楼层
这个也是约瑟夫环的问题。。
15个基督教和15个异教徒同乘一船航行。途中风浪很大,危险万状,领航人告诉大家,只有将全船人的一半投入海中,其余人始能幸免。大家赞成这个办法,并议定30人围成一圈,由第一人数起,挨个报数,每数到第9个人,便把他投入海中,循环进行,直到剩下第15个人为止,问如何排法,方使每次投海者皆是异教徒?

 楼主| 发表于 2006-6-17 14:32:00 | 显示全部楼层
有没有方法解开呢?

QQ:601041474 欢迎联系

回复帖上代码吧(LAVA下可编译的 或BASIC )


发表于 2006-6-17 14:43:00 | 显示全部楼层
Eastsun不是已经给出答案了吗。。把Eastsun的解法一稍加修改。。也就能解“让异教徒跳海”这个类似的约瑟夫环的问题了。。

我发现用python描述这类算法挺好的。。
#解“让异教徒们去跳海”这个题目。。得到的答案是会活下来的人的编号(是一个列表)
def alive(n,m,k):
  list=range(n+m)
  d=k;
  while len(list)>m:
    del list[d]   
    d=(d+k)%len(list)
  return list
print alive(15,15,8)
 楼主| 发表于 2006-6-17 14:50:00 | 显示全部楼层
我只是想在WQX上使用啊,貌似还不支持PYTHON啊

而且EASTSUN的编译后只能是定值,要算又要重新编译

麻烦弄一个可以输入的LAVA或BAS吧


发表于 2006-6-17 14:58:00 | 显示全部楼层
输入函数自己去写一个不就是了吗。

而且我的第二种算法即使用basic也是很容易写的(一个FOR语句就搞定,加上输入输出代码也不会超过7行)
 楼主| 发表于 2006-6-17 15:01:00 | 显示全部楼层
晕我C不行啊(没怎么学啊)

BASIC话给个代码吧

wqxvan@163.com

MAIL也行


发表于 2006-6-17 16:23:00 | 显示全部楼层
这个也要别人做。。楼主你这样下去会懒死的。。
主要是BASIC没有求余符号。。所以要求余数的话。。
得用下面这个公式

REM 大致等效于C语言中的R=A%B这个语句。。
R=A-INT(A/B)*B


  1. REM BASIC代码。。
  2. INPUT N,M
  3. FOR I=1 TO N
  4. A=R+M:B=I
  5. R=A-INT(A/B)*B
  6. NEXT I
  7. PRINT R
复制代码

 楼主| 发表于 2006-6-17 18:31:00 | 显示全部楼层
很精简啊!
不错啊!谢谢!


 楼主| 发表于 2006-5-27 21:30:25 | 显示全部楼层 |阅读模式
简单介绍下:M个人,每隔N个人淘汰掉,重复进行,求最后剩下的人.

P.S:请用C语言(可通过LAVA编译的)最快版本
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-8-24 06:25 , Processed in 0.010231 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表