求助约瑟夫问题
  • 板块题目总版
  • 楼主Limury
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/8/11 15:40
  • 上次更新2023/10/27 15:56:37
查看原帖
求助约瑟夫问题
602040
Limury楼主2022/8/11 15:40

P5944

WA了两个点,60pts。

代码:

#include<bits/stdc++.h>
using namespace std;

int n;
int a[505];
bool vis[505];

bool ysf(int k){
	memset(vis,0,sizeof(vis));
	int bh=0,bs=0,sum=0;
	while(sum<n){
		bh++;
		if(bh>n){
			bh-=n;
		}
		if(!vis[bh]){
			bs++;
			if(bs==k){
				sum++;
				if(a[sum]!=bh){
					return 0;
				}
				bs=0;
				vis[bh]=1;
			}
		}
	}
	return 1;
}

int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	for(int i=1;i<=n*n*n;i++){
		if(ysf(i)){
			printf("%d",i);
			return 0;
		}
	}
	printf("NIE");
	return 0;
}
2022/8/11 15:40
加载中...