hdu Prime Ring Problem

时间:2022-11-14 16:19:42

简单的dfs,貌似这道题用暴力枚举就可以了,毕竟数据开的是比较小的。

#include"iostream"
#include"algorithm"
#include"stdio.h"
#include"string.h"
#include"string"
#include"vector"
#include"cmath"
#define mx 105
using namespace std;
int q[mx],rear;
bool vis[mx];
int n;
bool prime(int x)
{
int i;
if(x==) return true;
for(i=;i<=x/;i+=)
{
if(x%i==) break;
}
if(i<=x/) return false;
return true;
}
void dfs(int x)
{
int i;
if(rear==n-)
{
if(prime(+x))
{
cout<<q[];
for(i=;i<n;i++) cout<<' '<<q[i];
cout<<endl;
return;
}
else return;
}
for(i=;i<=n;i++)
{
if(!vis[i]&&(i+x)%==&&prime(i+x))
{
vis[i]=true;
q[++rear]=i;
dfs(i);
--rear;
vis[i]=false;
}
}
}
int main()
{
int icase=;
while(scanf("%d",&n)==)
{
memset(vis,false,sizeof(vis));
icase++;
rear=;
q[]=;
vis[]=true;
cout<<"Case "<<icase<<":"<<endl;
dfs();
cout<<endl;
}
return ;
}