我是TLE小蒟蒻,求大佬帮助。
查看原帖
我是TLE小蒟蒻,求大佬帮助。
247173
木易、楼主2022/3/7 20:43
#include<iostream>
#include<cstdio>
using namespace std;
int f[1700000];
int t=1;
int a[17],b[17],c[33];
void sc(int p)
{
	for(int i=1;i<=f[p];i++)
	{
		cout<<a[i];
		if(i!=f[p])
		{
			cout<<" ";
		}
	}
	cout<<endl;
}
void dfs(int p,int x)
{
	if(x==f[p]+1)
	{
		int q=0;
		for(int i=1;i<=f[p]-1;i++)
		{
			if(c[a[i]+a[i+1]]==0)
			{
				q=1;
			}
		}
		if(c[a[1]+a[f[p]]]==0)
		{
			q=1;
		}
		if(q==0)sc(p);
		return;
	}
	for(int i=2;i<=f[p];i++)
	{
		if(x!=1&&c[a[x-1]+i]==0)
		{
			continue;
		}
		if(b[i]==0)
		{
			a[x]=i;
			b[i]=1;
			dfs(p,x+1);
			b[i]=0;
		}
	}
}
int ycl()
{
	for(int i=2;i<=31;i++)
	{
		int w=0;
		for(int j=2;j*j<=i;j++)
		{
			if(i%j==0)
			{
				w=1;
			}
		}
		if(w==0)
		{
			c[i]=1;
		}
	}
}
int main()
{
	//freopen("未命名2.in","r",stdin);
	//freopen("未命名2.out","w",stdout);
	ycl();
	a[1]=1;
	while(cin>>f[t])
	{
		t++;
	}
	t--;
	for(int i=1;i<=t;i++)
	{
		cout<<"Case "<<i<<":"<<endl;
		dfs(i,2);
		/*if(i!=t)
		{*/
			cout<<endl;
		//}
	}
	return 0;
}
2022/3/7 20:43
加载中...