P1145求助!死循环
  • 板块题目总版
  • 楼主Cubexyyy001
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/10/30 20:22
  • 上次更新2023/11/2 10:38:51
查看原帖
P1145求助!死循环
856326
Cubexyyy001楼主2023/10/30 20:22

P1145 约瑟夫 代码:

#include<bits/stdc++.h>
using namespace std;
int a[1001],n;
int hsg(int x)//求坏人是否死光的函数 
{
	for(int i=x;i<=(x-1)*2;i++)if(a[i]!=-1)return false;
	return true;
}
int ysf(int x)
{
	int l=x;
	while(1)
	{
		a[l]=-1;//死亡位置标记为-1 
		if(l%(n*2)<=n)return false;//死的是好人就直接返回false 
		for(int i=1;i<=x;i+=(a[i]!=-1))
		{
			//if(a[i]!=-1)i++;
			l++;
		}
		l%=(n*2);//防止位置超出人数 
		if(hsg(n/2+1)==true)return true;//如果坏人死光就返回true 
	}
}
int main()
{
	cin>>n;
	for(int i=n/2+1;;i++)//从坏人开始的第一个位置循环 
	{
		if(ysf(i)== true)//函数求以i做m是否能在第一个好人die之前干掉所有坏人 
		{
			cout<<i;
			return 0;
		}
	}
 	return 0;
}

就硬卡着,啥也不输,猜测不是超时而是死循环

2023/10/30 20:22
加载中...