有M个敢死队员要炸掉敌人的一个碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。如果前一个战士没完成任务,则要再派一个战士上去。现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。以此类推,直到任务完成为止。 这题本来就叫“敢死队”。“谁都不想去”,就这一句我觉得这个问题也只能叫“不敢死队问题”。今天大家就要完成这道不敢死队问题。我们假设排长是1号,按照上面介绍,从一号开始数,数到5的那名战士去执行任务,那么排长是第几个去执行任务的?使用c语音程序
时间: 2023-10-22 13:07:44 浏览: 66
以下是使用C语言解决敢死队问题的程序:
```c
#include <stdio.h>
#define MAX 100 // 最大战士数量
int main() {
int n, k, m, i, j, a[MAX]; // n是战士数量,k是计数器,m是要炸的碉堡,i和j是循环变量,a数组用来记录每个战士是否完成任务
scanf("%d %d %d", &n, &k, &m);
for (i = 1; i <= n; i++) {
a[i] = 0; // 初始化,每个战士都没有完成任务
}
int count = 0; // 记录已完成任务的战士数量
i = 1; // 从1号战士开始计数
while (count < n) { // 当所有战士都完成任务时结束循环
j = 1;
while (j <= k) { // 数k个人
if (a[i] == 0) { // 如果这个战士没有完成任务
j++; // 计数器加1
}
if (j > k) { // 如果计数器达到k
if (a[i] == 0) { // 如果这个战士没有完成任务
count++; // 记录已完成任务的战士数量加1
a[i] = 1; // 标记这个战士已完成任务
if (count == m) { // 如果完成任务的战士数量等于要炸的碉堡数
printf("%d\n", i); // 输出排长的编号
return 0;
}
}
break; // 结束本轮计数
}
i++; // 继续数下一个战士
if (i > n) { // 如果已经数到最后一个战士,从头开始数
i = 1;
}
}
}
return 0;
}
```
程序运行时需要输入三个参数,依次为战士数量、计数器k和要炸的碉堡数m。程序输出排长的编号,即完成任务的第m个战士的前一个战士的编号。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)