素数环(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;
}
标签:Prime,...,int,dfs,524,long,pd,UVa,include 来源: https://blog.csdn.net/weixin_49226685/article/details/113813766