主题:哪位能给我解决下约瑟夫问题
chinatyc
[专家分:0] 发布于 2005-01-21 22:34:00
猴子选大王:一群(M)猴子排成一列,数到N的退出,直到剩下一个.
回复列表 (共4个回复)
沙发
勇敢的Evan [专家分:0] 发布于 2005-01-24 20:47:00
用链表或者数组循环即可做出,非常简单,自己想想吧!
板凳
hackert [专家分:0] 发布于 2005-01-29 20:58:00
program tyk2;
var
a:array[1..10000] of 0..1;
i,j,n,k,t,x:integer;
begin
writeln('Please input n:___');
readln(n);
for i:=1 to n do a[i]:=1;
i:=0;j:=0;k:=0;t:=0;x:=0;
repeat
i:=i+1;
if a[i]=1 then t:=t+1;
if t=3 then begin
a[t]:=0;
j:=j+1;
end;
k:=n-j-x;
i:=0;
a[k-2]:=0;
x:=x+1;
until n-j-x=2;
for i:=1 to n do if a[i]=1 then begin t:=i;break;end;
writeln(t);
end.
3 楼
bigchen [专家分:1940] 发布于 2006-10-21 21:18:00
模拟法!
4 楼
lgr7000 [专家分:230] 发布于 2006-10-22 10:41:00
var
n,m,k,j,i:integer;
s:array[1..100] of integer;
begin
readln(n,m);
for i:=1 to n do
s[i]:=i;j:=1;
while n>0 do
begin
for i:=1 to m-1 do
begin
if j=n then j:=0;
inc(j);
end;
write(s[j],' ');
for k:=j+1 to n do s[k-1]:=s[k];
dec(n);
if j>n then j:=1;
end;
end.
我来回复