设有二十只猴子围成一圈从零开始数凡被三整除的出圈,问谁当大王?
Delphi之解:
procedure TForm1.Button1Click(Sender: TObject);
var
kk,mm,ii:integer;
var_aa:array [1..20] of integer;
begin
var_aa[1]:=1;
for ii:=2 to 20 do
var_aa[ii]:=0;
kk:=0;
ii:=1;
mm:=20;
while (1=1) do
begin
kk:=kk+1;
if ii<20 then ii:=ii+1
else ii:=1;
while (var_aa[ii]=1) do
begin
ii:=ii+1;
if ii>20 then ii:=1;
end;
if kk mod 3 = 0 then
begin
var_aa[ii]:=1;
mm:=mm-1;
end;
if mm=1 then break;
end;
for ii:=1 to 20 do
if var_aa[ii]=0 then
begin
ShowMessage(IntToStr(ii));
//break;
end;
end;
博客围绕猴子选大王问题展开,即二十只猴子围成圈从零开始数,被三整除的出圈,求谁当大王。给出了Delphi语言的解决方案,通过编写代码实现了该问题的求解,利用数组和循环逻辑判断出圈情况。

8290

被折叠的 条评论
为什么被折叠?



