用c语言实现,n只猴子选猴王,选法如下,将n只猴子从1到n编号排成一个圆圈,从1号猴子开始秋数,每数到13猴子出列,如此循环往复,到圈子只剩两只时,数1的那个猴子就是猴王,编程输出猴王的13~1000
时间: 2024-06-13 09:08:40 浏览: 104
猴子选大王问题
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int num;
struct node *next;
} Node;
int main() {
int n = 1000; // 猴子总数
int m = 13; // 数到m的猴子出列
int i, j;
Node *head, *p, *q;
head = (Node *) malloc(sizeof(Node));
head->num = 1;
p = head;
for (i = 2; i <= n; i++) {
q = (Node *) malloc(sizeof(Node));
q->num = i;
p->next = q;
p = q;
}
p->next = head; // 链接成一个环
for (i = 1; i < n; i++) {
for (j = 1; j < m; j++) {
p = p->next;
}
printf("%d ", p->next->num);
p->next = p->next->next; // 删除p的下一个节点
}
printf("\n%d\n", p->num); // 输出最后一个节点,即猴王
return 0;
}
```
--相关问题--:
1. 如何用C语言实现约瑟夫环问题?
2. 请介绍一下
阅读全文