大榕树 \ Pascal语言 \ Pascal练习
约瑟夫环
原文链接:http://www.mydrs.org/program/list.asp?id=61
约瑟夫环
[问题来源] 名题
[问题描述] 猴子选大王:一群(M)猴子排成一列,数到N的退出,直到剩下一个.
输入:[KEYBOARD] 输出:[SCREEN]
5 3
2
[问题分析] 按照方法模拟即可.
program JOSR;
const mmax=100;
var m,n,j:integer;
rou:array[1..mmax] of boolean;procedure init;
var i:integer;
begin
write('Please input M:');readln(m);
write('Please input N:');readln(n);
for i:=1 to m do rou[i]:=true;
j:=0;
end;procedure check;
var i,k:integer;
begin
i:=0;k:=0;
repeat
inc(k);
if k>m then k:=1;
if rou[k]=true then begin
inc(i);
if i mod n=0 then begin rou[k]:=false;inc(j);end;
end;
until j=m-1;
end;procedure print;
var i:integer;
begin
for i:=1 to m do if rou[i]=true then writeln(i);
end;begin
init;
check;
print;
readln;
end.
作者:MQL
来源:Pascal Zone
时间:2001-06-21
大榕树 版权所有 ©1999-2006