回 帖 发 新 帖 刷新版面

主题:哪位能给我解决下约瑟夫问题

猴子选大王:一群(M)猴子排成一列,数到N的退出,直到剩下一个.

回复列表 (共4个回复)

沙发

用链表或者数组循环即可做出,非常简单,自己想想吧!

板凳

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 楼

模拟法!

4 楼

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.

我来回复

您尚未登录,请登录后再回复。点此登录或注册