设有二十只猴子围成一圈从零开始数凡被三整除的出圈,问谁当大王?
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;