本帖最后由 MUYIXUE 于 2024-7-2 21:46 编辑 #include <stdio.h>
#define ARR_SIZE 41
void fishc(int arr[], int arrsize, int startnum, int read_num);
int main() {
int arr[ARR_SIZE];//假设有40人参与了游戏
for (int i = 0; i < ARR_SIZE; i++) {
arr[i] = 0;
}//此时没有一个人死亡
fishc(arr, ARR_SIZE, 0, 3);
for (int i = 0; i < ARR_SIZE; i++) {
printf("%3d", arr[i]);
}
return 0;
}
//0表示此座位1人没有死去,数字表示死去的顺序
void fishc(int arr[],int arrsize,int startnum ,int read_num) {
static int counter = 0;//用来标记死亡总数
int counter_of_reader = 0;//报数的人数
int i = 0;//问话从startnum开始
for (;;) {
if (counter_of_reader < read_num) {
if (arr[(startnum + i) % arrsize] == 0) {
counter_of_reader++;
}
}
else {
arr[(startnum + i - 1) % arrsize] = ++counter;
break;
}
i++;
}
if (arrsize - counter > 2) {
fishc(arr, arrsize, startnum + i, read_num);
}
}
|