改进约瑟夫(Joseph)环问题

改进约瑟夫问题的描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人有一个密码Ki(整数),留作其出圈后应报到Ki后出圈。报数方法采用顺时针报数和逆时针报数交替... 改进约瑟夫问题的描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈, 每人有一个密码Ki(整数),留作其出圈后应报到Ki后出圈。报数方法采用顺时针报数和逆时针报数交替进行,初始密码可任意确定。求最后剩下的人的编号。 展开
 我来答
匿名用户
2009-06-10
展开全部
const
max=1000;
type
ysf=record
left:integer;
right:integer;
num:integer;
end;
var
a:array[1..max]of ysf;
i,j,p,t,n,m:integer;
x:boolean;

begin
read(n,m);
for i:=1 to n do
read(a[i].num);
if n>max then begin write('error');exit;end;
for i:=2 to n-1 do
begin
a[i].left:=i-1;
a[i].right:=i+1;
end;
a[1].left:=n;a[1].right:=2;
a[n].left:=n-1;a[n].right:=1;

p:=n;t:=n;x:=true;
while t>0 do
begin
for j:=1 to m do

if x then p:=a[p].right
else p:=a[p].left;
write(a[p].num:4);
a[a[p].left].right:=a[p].right;
a[a[p].right].left:=a[p].left;
x:=not(x);
dec(t);
end;
end.

不晓得你要什么语言的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式