猴子选王问题答案

原创 2005年04月24日 21:12:00

设有二十只猴子围成一圈从零开始数凡被三整除的出圈,问谁当大王?

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;

相关文章推荐

循环链表-约瑟夫问题-猴子选大王

总时间限制(Time limit):1000ms内存限制(Memory limit):65536kB 描述(Description) 有n只猴子,按顺时针方向围成一圈选大王(编号从1到n)...

猴子选大王(约瑟夫环问题)两种解决方案

问题: 有M只猴子围成一圈,按序每只从1到M中的编号,打算从中选出一个大王;经过协商,决定出选大王的规则:从第一个开始循环报数,数到N的猴子出圈,最后剩下来的就是大王。要求:从键盘输入M、N,编...
  • cai0538
  • cai0538
  • 2011年11月17日 11:19
  • 5360

猴子选大王(约瑟夫问题)JAVA实现

问题 猴子选大王,假设有M个猴子围成一圈,从1开始报数,数到N的猴子退出,最后剩下的猴子就是大王, 写出程序求出最后是大王的那只猴子最初的位置。 解题分析: 这道题很明显是约瑟夫问题,对于这样...

第19周上机实践项目2——猴子选大王(约瑟夫问题)

问题及代码 /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:辛彬 * ...

猴子选大王问题

  • 2012年04月07日 18:52
  • 866B
  • 下载

猴子选大王,选班长等类似问题

问题: 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3,凡是报到3的人退出圈子,问最后留下的是原来第几号的那位。 分析: n个人围成一圈,首先想到的就是,用...

猴子选大王 约瑟夫问题探究

  • 2010年06月09日 17:01
  • 22KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:猴子选王问题答案
举报原因:
原因补充:

(最多只允许输入30个字)