大榕树 \ 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