简单模拟但是出错,求助
  • 板块P1145 约瑟夫
  • 楼主Aphrodite2
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/23 21:35
  • 上次更新2024/10/23 22:48:20
查看原帖
简单模拟但是出错,求助
1467259
Aphrodite2楼主2024/10/23 21:35
#include<stdio.h>
int main(){
	int k, m, a[100], i = 1, baoshu = 1,dead = 0;
	int l;
	scanf("%d", &k);
	m = k + 1;
	for(; i <= 2*k; i++){
		a[i] = 1;
	}
	i = 1;
	while(m > -2){
		if(i == 2*k+1) i = 1; //模拟圆 
		if(baoshu == m){  //开杀 
			baoshu = 1; //重置报数 
			if(i<=k){  //杀错了,重来 
				m ++;
				i = 1;
				dead = 0;	
		    	for(l = 1; l <= 2*k; l++){
					a[l] = 1;
					}	
				continue;
				}
			else{ //杀 
			 	a[i] = 0;
			 	dead ++; 
			}
			}
		if(a[i] == 1){//活人报数 
			i++;
			baoshu++;
		}
		else i++;//私人不报数 
		if(dead == k) break; //结束条件:全杀了 
	}
	printf("%d", m);
	return 0;
}

2024/10/23 21:35
加载中...