阅读:3019回复:5
猴子选大王 [分享]
猴子选大王
题目: 有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" /> |
|
|
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> |
|
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" /> |
|
3楼#
发布于:2004-12-06 23:22
收入,不错
|
|
4楼#
发布于:2004-12-28 19:29
有没有用单链循环表模拟此过程的程序啊!??????
|
|
5楼#
发布于:2004-12-28 20:59
这程序写得好简单啊
|
|