queensf
总版主
总版主
  • 注册日期2003-12-04
  • 发帖数735
  • QQ
  • 铜币3枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2808回复:5

猴子选大王 [分享]

楼主#
更多 发布于:2004-02-21 15:16
猴子选大王  
 
题目:

有M个猴子围成一圈,每个有一个编号,编号从1到M。打算从中选出一个大王。经过协商,决定选大王的规则如下:从第一个开始,每隔N个,数到的猴子出圈,最后剩下来的就是大王。

要求:从键盘输入M,N,编程计算哪一个编号的猴子成为大王。

参考程序



 program tt;
 const n1=100;
 var a:array [1..n1] of integer;
       m,n,i,j,k:integer;
 begin
         write('input m,n:');
         readln(m,n);
         for i:=1 to m do a:=i;
         i:=1; k:=0;
         while i< m do
         begin
         j:=0;  
         while j<=n do  
         begin
                           j:=j+1;
                           k:=k+1;
                           if k>m then
                           begin
                                   k:=1;
                                   while a[k]=0 do k:=k+1;
                           end;
                  end;
                  a[k]:=0; i:=i+1;
                  end;
                  i:=1;
                  while a=0 do i:=i+1;
                  writeln('The king is ',i);
end.

变形猴子选大王
题目:有M个人围成一圈,每人有一个编号,从编号为1的人开始,每隔N个出圈,按出圈次序排成一列,其编号刚好按顺序从1到M。

要求:从键盘输入M,N,编程计算并输出这M个人原来在圈中的位置。




 
  <img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em05.gif" />
喜欢0 评分0
[color=blue][size=4][i][b][u] 【 解决不了的事情,就不要想。世界不会因为我而改变。 】 [/size][/u][/b][/i][/color]
zhang8556
路人甲
路人甲
  • 注册日期2004-11-20
  • 发帖数1
  • QQ
  • 铜币102枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-11-20 19:42
<P><U><FONT color=#800080>猴子选大王
任务:一堆猴子1……m 围成一圈
第一个猴子开始报数 每当数到n时 猴子从圈中出来,继续循环 直到剩下一个猴子 那个就是大王
输入数据:m。n 输出此猴子的编号    </FONT></U></P><P><U><FONT color=#800080></FONT></U> </P><P><U><FONT color=#800080>这样的话 怎么编啊 请教高手帮忙</FONT></U></P>
举报 回复(0) 喜欢(0)     评分
xyc4276
路人甲
路人甲
  • 注册日期2004-11-25
  • 发帖数29
  • QQ
  • 铜币233枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-12-05 20:43
<P>#include <iostream.h>
 #define n 40
 #define m 4
  void dawang()
  {
    int p[n+1];
 int i,j,t;
 for(i=0;i<=n;i++)
 p=i+1;
 t=0;
 for(i=n+1;i>=1;i--)
 {
    t=(t+m-1)%i;
    cout<<p[t]<<" ";
    for(j=t+1;j<=i-1;j++)
 p[j-1]=p[j];
 }
 }
void main()
{
   dawang ();
   }</P><P>上面的m,n的值可以随便改,语句更简洁</P><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" />
举报 回复(0) 喜欢(0)     评分
wsfirst
路人甲
路人甲
  • 注册日期2004-12-06
  • 发帖数47
  • QQ
  • 铜币-1枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-12-06 23:22
收入,不错
举报 回复(0) 喜欢(0)     评分
lhbyou
路人甲
路人甲
  • 注册日期2004-12-28
  • 发帖数1
  • QQ
  • 铜币102枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2004-12-28 19:29
有没有用单链循环表模拟此过程的程序啊!??????
举报 回复(0) 喜欢(0)     评分
luofang
路人甲
路人甲
  • 注册日期2004-12-28
  • 发帖数1
  • QQ
  • 铜币102枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2004-12-28 20:59
这程序写得好简单啊
举报 回复(0) 喜欢(0)     评分
游客

返回顶部