c语言数组+猴子选大王
时间: 2023-12-11 17:02:39 浏览: 141
这是一道经典的约瑟夫问题,也称为猴子选大王问题。下面是C语言数组实现的代码:
```c
#include <stdio.h>
#include <string.h>
#include <math.h>
int main() {
int n;
scanf("%d",&n);
int a[n];
int i,j,k;
int num=n;//计数剩余猴子
int time=0;//计数器
for(i=0;i<n;i++) {
a[i]=i+1;//初始化每只猴子编号==序数+1;
}
j=0;
while(num>1) {
if(a[j]!=0) {
time++;//如果非0则还在队伍里,0则代表退出
}
if(time==3) {
a[j]=0;//此处置为0表示退出
time=0;//计数器归零
num--;//猴子少一个
}
if(j==n-1) {
j=-1;//如果遍历到了末尾就回到队伍开头(由于后面要j++,为了遍历到a【0】所以置为-1)
}
j++;
}
for(i=0;i<n;i++) {
if(a[i]!=0) printf("%d",a[i]);
}
return 0;
}
```
这个程序的基本思路是:将猴子的编号存储在一个数组中,然后按照约瑟夫问题的规则,每次删除第三个猴子,直到只剩下一个猴子为止。最后输出剩下的猴子的编号,即为大王的编号。
阅读全文