您的位置:首页 > 其它

九度OJ 1459 Prime ring problem

2014-03-05 21:59 246 查看
#include <stdio.h>

int prime[12] = {2,3,5,7,11,13,17,19,23,29,31,37};
int ans[18];
int cnt;
int n;
bool visit[18];

bool isPrime(int x)
{
for(int i = 0; i < 12; i++)
if(x == prime[i])
return true;
return false;
}

void DFS()
{
if(cnt == n)
{
if(isPrime(ans[cnt]+ans[1]))
{
printf("1");
for(int j = 2; j <= n; j++)
{
printf(" %d",ans[j]);
}
printf("\n");
}
}
else
{
for(int i = 2; i <= n; i++)
{
if(visit[i] == false)
{
if(isPrime(i+ans[cnt]))
{
ans[++cnt] = i;
visit[i] = true;
DFS();
visit[i] = false;
cnt--;
}
}
}
}
}

int main()
{
int cas = 1;
while(scanf("%d",&n) != EOF)
{
int i;
for(i = 1; i <= n; i++)
visit[i] = false;
ans[1] = 1;
cnt = 1;
printf("Case %d:\n",cas);
DFS();
printf("\n");
cas++;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: