主题:问题:猴子选大王
&佑慧妹妹&
[专家分:660] 发布于 2007-04-15 09:37:00
恐怕这里的每一个人都做过,但是我不知道,还请各位帮一下忙。
有N(输入)只猴子选大王,一二三一二三报数,先从头往尾数,数三的出来,全部树完后,再从尾到从数,数三的出来……重复多次,知道最后只剩两只猴子时,数一的是大王,请问,如果想当猴王,一开始应站在什么位置上?
回复列表 (共5个回复)
沙发
&佑慧妹妹& [专家分:660] 发布于 2007-04-15 09:38:00
给程序
板凳
Matodied [专家分:7560] 发布于 2007-04-15 19:50:00
1 CLS
INPUT n
IF n<3 OR n>100 OR n<>INT(n) THEN 1
DIM a(n):FOR i=1 TO n:a(i)=1:NEXT i
i=0:j=0:s=n
DO
j=j+1
DO
i=i+1
IF i>n THEN i=1
LOOP UNTIL a(i)=1
IF j=3 THEN
a(i)=0:j=0:s=s-1
IF s=2 THEN
k=i
DO
k=k+1
if k>n then k=1
LOOP UNTIL a(k)=1
PRINT k:END
END IF
END IF
LOOP
END
3 楼
&佑慧妹妹& [专家分:660] 发布于 2007-04-15 20:37:00
楼上的,你只描述了从头到尾,没描述从尾到头,还有,你的程序有些小错误
4 楼
moz [专家分:37620] 发布于 2007-04-17 09:28:00
当 N>255 的时候,用 mkl$ 代替.
N=200
s$=""
for i=1 to N
s$=s$+chr$(i)
next
do until len(s$)<3
z$=s$
s$=""
for i=1 to len(z$)
if i mod 3 then s$=mid$(z$,i,1)+s$
next
loop
print asc(s$)
5 楼
mickeyice [专家分:200] 发布于 2007-04-17 10:29:00
dim a[1000] '定义 a[1000],1000为足够多的猴子数
input n
for i= 1 to n:a[i]=i:next '给每只猴子编号
j=n:t=1 'j 为当前猴子数,t为退出循环的标记
while(t=1)
k=1
for i=3 to j step 3:a[k]=a[i]:k=k+1:next '顺向数猴子,k为当前合格的猴子数
for j=1 to k\2:swap a[j],a[k-j]:next '将猴子序列反向排列
j=k:if j<3 then t=0 '如果猴子只有2只,t=0 退出while循环
wend
? a[1]
end
我来回复