当前位置: 代码迷 >> C语言 >> [求助]请大家帮忙编一个程序
  详细解决方案

[求助]请大家帮忙编一个程序

热度:235   发布时间:2007-04-09 21:04:45.0
[求助]请大家帮忙编一个程序
N只猴子选大王,选法如下:所有猴子按1,2,3。。。N编号围坐一圈,按照1,2,3,。。。。M报数,凡是报到M号的退出圈外,如此循环报数,直到圈内剩下一只猴子,这只猴子就是大王。
----------------解决方案--------------------------------------------------------
你搜一下吧,以前有好多这样的帖
----------------解决方案--------------------------------------------------------
约瑟夫环问题!
----------------解决方案--------------------------------------------------------

谢谢啦~!!
----------------解决方案--------------------------------------------------------
#include <stdio.h>
typedef struct baoshu
{
int num,code;
struct baoshu *next;
}Node,*List;

void Quitbaoshu(List L,int n,int m)
{
Node *p,*s,*nL;
p=L->next;
printf("\n\nnishuruxinxiruxia:\n");

nL=L->next;
printf("\n\nchulieshunxu:\n");
do
{
int i=1;
p=nL;
while(i<m)
{
s=p;
p=p->next;
i++;
}

printf("xuesheng%d\n",p->num);
s->next=p->next;
nL=s->next;
n--;
}while(n>0);
free(p);
free(s);
}

void Creatbaoshu(List L,int n)
{
int i=1;
int key;
Node *p,*s;
p = L;
for(;i<=n;i++)
{ s=p;
p=(Node *)malloc(sizeof(Node));
s->next=p;
p->num=i;

}
p->next=L->next;
free(p);
}

void main()
{
int m,n;
List L;
L=(List)malloc(sizeof(Node));
printf("shu ru ren shu N he bao shu shang xian m:\n");
scanf("%d%d",&n,&m);
Creatbaoshu(L,n);
Quitbaoshu(L,n,m);
getch();
return;
}

程序就是上边这个 ,可以自己再加些东西

----------------解决方案--------------------------------------------------------
  相关解决方案