WA求助
查看原帖
WA求助
400205
basachenboming楼主2022/1/6 16:58
#include<bits/stdc++.h>
using namespace std;
bool vis[100001];
int a[100001];
int n;
bool z(int x)
{
    if(x==1)
    return 0;
	for(int i=2;i<=sqrt(x);i++)
	{
		if(x%i==0)
		{
			return 0;
		}
	}
	return 1;
}
void output()
{
		for(int i=1;i<=n;i++)
		{
			cout<<a[i];
			if(i<n)
			{
				cout<<" ";
			}
		}
		cout<<endl;
}
void dfs(int k)
{
	if(k>n)
	{
		return;
	}
	for(int i=1;i<=n;i++)
	{
        if(vis[i]==1)
        {
        continue;
        }
		else if(k==1)
		{
			a[k]=i;
			vis[i]=1;
			dfs(k+1);
            vis[i]=0;
		}
		else if(k==n)
		{
			if(z(a[1]+i)==1&&z(a[k-1]+i)==1)
			{
				vis[i]=1;
				a[k]=i;
                if(a[1]==1)
                output();
				dfs(k+1);
                vis[i]=0;
			}
		}
		else 
        {
        if(z(a[k-1]+i)==1)
		{
			vis[i]=1;
			a[k]=i;
			dfs(k+1);
            vis[i]=0;
		}
        }
	}
}
int main()
{int l=1;
while(cin>>n)
{
	cout<<"Case "<<l<<":"<<endl;
    l++;
	dfs(1);
	if(l>1)
    {
    cout<<endl;
    }
    memset(vis,0,sizeof(vis));
    memset(a,0,sizeof(a));
}
return 0;
}
2022/1/6 16:58
加载中...