早教吧作业答案频道 -->其他-->
pascal N只猴子选大王 恩 程序尽量简单.初学者水平N只猴子选大王.选举办法如下:从头到尾1、2、3报数,凡报3的退出,余下的从尾到头1、2、3报数,凡报3退出;余下的又从头到尾报数,还是报3的
题目详情
pascal N只猴子选大王 恩 程序尽量简单.初学者水平
N只猴子选大王.选举办法如下:从头到尾1、2、3报数,凡报3的退出,余下的从尾到头1、2、3报数,凡报3退出;余下的又从头到尾报数,还是报3的退出;依此类推,当剩下的两只猴子时,取这时报数报1的为王.若想当猴王,请问当初应占据什么位置?
例如:输入猴子最初的只数N:10
输出想当猴王当初应占据的位置:8
N只猴子选大王.选举办法如下:从头到尾1、2、3报数,凡报3的退出,余下的从尾到头1、2、3报数,凡报3退出;余下的又从头到尾报数,还是报3的退出;依此类推,当剩下的两只猴子时,取这时报数报1的为王.若想当猴王,请问当初应占据什么位置?
例如:输入猴子最初的只数N:10
输出想当猴王当初应占据的位置:8
▼优质解答
答案和解析
var
q:array[1..1000] of integer;// 循环队列
b,e,c:integer;
n:integer;
i:integer;
procedure add(x:integer);
begin
inc(e);
if e >= 1000 then e:=1;
q[e]:=x;
inc(e);
end;
function del():integer;
begin
inc(b);
if b >= 1000 then b:=1;
del:=q[b];
dec(c);
end;
begin
readln(n);
for i:= 1 to n do
add(i);
while c > 2 do
begin
add(del); // 报 1
add(del); // 报 2
del; // 报 3 的退出
end;
// 此时只剩两只猴子
writeln(del);
end.
q:array[1..1000] of integer;// 循环队列
b,e,c:integer;
n:integer;
i:integer;
procedure add(x:integer);
begin
inc(e);
if e >= 1000 then e:=1;
q[e]:=x;
inc(e);
end;
function del():integer;
begin
inc(b);
if b >= 1000 then b:=1;
del:=q[b];
dec(c);
end;
begin
readln(n);
for i:= 1 to n do
add(i);
while c > 2 do
begin
add(del); // 报 1
add(del); // 报 2
del; // 报 3 的退出
end;
// 此时只剩两只猴子
writeln(del);
end.
看了 pascal N只猴子选大王...的网友还看了以下:
/*3、约瑟夫问题约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始 2020-05-17 …
猴子选大王 PascalDescription 有n个猴子分别编号为1,2,3,...,n,按顺时 2020-05-17 …
猴子选大王C#题目,要求有注释一群猴子都有编号,编号分别是1,2,3 ...n ,这群猴子(n个) 2020-05-17 …
现在有大猴和小猴共100只,正好分吃了140个桃子.知道每只大猴吃3个桃子,三只小猴吃1个桃子,问 2020-07-12 …
求java代码是《约瑟夫环问题-猴子选大王》[问题描述]一堆猴子都有编号,编号是1,2,3...m 2020-07-17 …
c#中关于“猴子选大王”算法的疑问?猴子选大王问题:一堆猴子都有编号,编号是1,2,3...m,这 2020-07-21 …
有一群猴子正要分56个桃子.每只猴子可以分到同样个数的桃子.这时.又窜来4只猴子.只好重新分配,但要 2020-10-29 …
猴王让小猴数捡回的栗子,小猴10个10个的数,到最后缺一个;9个9个的数,到最后也缺一个:8个8个, 2020-11-11 …
图形模拟猴子选大王过程C/C++有M只猴子围成一圈,每只各一个从1到M中的编号,打算从中选出一个大王 2020-11-17 …
小猴、小狗、小兔和小猫竞选“数学小博士”,共收到6540张选票.小猴最多,比小狗多128张比小兔多1 2021-01-01 …