永发信息网

数据结构课程设计题(c语言)

答案:1  悬赏:40  手机版
解决时间 2021-06-05 05:34
  • 提问者网友:半生酒醒
  • 2021-06-04 04:47

1. 猴子选大王
  任务:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
  要求:
  输入数据:输入m,n m,n 为整数,n<m
  输出形式:中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号,建立一个函数来实现此功能

最佳答案
  • 五星知识达人网友:廢物販賣機
  • 2021-06-04 05:40

以前写的一个关于约瑟夫环的程序.. 我稍微修改了下.


你参考下.



#include< stdio.h >
#include< malloc.h >


int Ysf( int m, int n )
{
int i,s,num = 0; //s用于记录淘汰玩家的个数. num用于累加报数值.
int* a=( int* )malloc( m * sizeof( int ));
s = m;
for( i=0; i<m; i++ ) //初始化玩家状态.
a[ i ] = 1;

i = 0; //下标重置.
while( i = i%m, 1 != s )
{
if( a[i++] && ++num%n==0 )
{
a[i-1]=0;
s--;
}
}

for( i=0; !a[i]; ++i ) ; //寻找数组中胜利的玩家.

return i+1;
}


int main()
{
int m,n,win;


while( 1 )
{
if(scanf("%d%d",&m,&n) != 2 || m <= n)
{
printf("Error\n");
fflush( stdin );
continue;
}
if( m > n ) break;
}

win = Ysf( m, n );
printf( "%d\n", win );


return 0;
}

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯