hdu 1016 Prime Ring Problem

来源:互联网 发布:开启445端口批处理 编辑:程序博客网 时间:2024/04/25 16:18
#include<iostream>using namespace std;bool isprime(int);void backtrack(int);bool check(int);int n;int tu[21];int main(){  int count=0;  while(cin>>n)  {    count++;    tu[1]=1;    cout<<"Case "<<count<<":"<<endl;    backtrack(2);    cout<<endl;  }    return 0;}bool isprime(int n){   for(int i=2;i<=n/2;i++)   {    if(n%i==0)     return false;   }   return true;}bool check(int t){   for(int i=1;i<t;i++)   {     if(tu[i]==tu[t])     return false;   }   return true;}void backtrack(int t){  if(t>n)  {     if(isprime(tu[n]+tu[1])&&check(n))     {      for(int i=1;i<=n;i++)      {       cout<<tu[i]<<(i<n?' ':'\n');      }     }  }  else  {      for(int i=2;i<=n;i++)      {       tu[t]=i;       if(isprime(tu[t]+tu[t-1])&&check(t))       backtrack(t+1);      }  }}