素数环(Prime Ring Problem,UVa 524)

问题描述:

输入正整数 n n n,把整数 1 , 2 , 3 , , 4 , 5... , n 1,2,3,,4,5...,n 1,2,3,,4,5...,n组成一个环,让相邻两个整数和为素数。
整数第一个从1开始

样例输入
6
样例输出
1 4 3 2 5 6
1 6 5 2 3 4

代码:

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <math.h>
#include <bitset>
#include <algorithm>
#include <climits>
using namespace std;
typedef long long ll;
int a[50];
int f[20];
int n;
bool pd(int x,int y)
{
	int num=x+y;
	for(int i=2;i<num;i++)
	  if(num%i==0)
	    return false;
	return true;
}
void dfs(int x)
{
	if(x>n)
	{
		if(pd(a[n],1))
		{
			for(int i=1;i<=n;i++)
			 cout<<a[i]<<" ";
			 cout<<endl;
		}
		return;
	}
   for(int i=2;i<=n;i++)
     if(f[i]==0&&pd(i,a[x-1])==true)
	 {
		 f[i]=1;
		 a[x]=i;
		 dfs(x+1);
		 f[i]=0;
		 a[x]=0;
	 }
}
int main()
{
   
   cin>>n;
   a[1]=1;
   dfs(2);
   return 0;
}
上一篇:Foreign Exchange UVA - 10763


下一篇:小球下落——UVa 679