不知道为什么好像无限循环,急急急,求助
  • 板块P1145 约瑟夫
  • 楼主telankesi
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/11/16 21:04
  • 上次更新2023/10/27 02:44:15
查看原帖
不知道为什么好像无限循环,急急急,求助
866969
telankesi楼主2022/11/16 21:04
#include <stdio.h>

int k;
int  fun(int m, int numout, int a[]);
int main() {

	int a[100] = { 0 };//若为1则出去 
	int numout=0;//出局人数
	scanf("%d", &k);
	int n = 2 * k;//总人数

	int m = k + 1;//m至少为k+1
	for (;; m++) {
		for (int i = 0; i < n; i++) {
			a[i] = 0;
   }
		if (fun(m,numout,a) == 1) {
			printf("%d", m);
			break;
		}
	}
	return 0;
}

int  fun(int m,int numout,int a[]) {
	int nownum=-1;//记录报号到的下标  0~k-1为好人,k~n-1为坏人
	
	while (numout != k) {
		int sum = 0; //记录报数是否到m
		while(sum!=m) {
			while (a[nownum] != 0) {
				nownum = (nownum + 1) % (2 * k);

			}
		sum++;
	}
		if (numout <= k - 1 && numout >= 0)return 0;
		a[nownum] = 1;
	numout++;
	}
	return 1;
}
2022/11/16 21:04
加载中...