Uva 524 Prime Ring

如果用全排列生成之后,在判断是否是素数环是会超时的,应该用回溯。

回溯的时候  首先要注意 递归边界 ,结束的时候别忘记判断最后一个和第一个元素能否成立 

还有要记得vis的使用和递归之后的清理。

 #include <cstdio>
 #include <cstring>
 using  namespace std;
 ;
 +],vis [+];
 +];
 void  dfs(int cur)
 {
     ]+a[]])
     {
         printf(]);
         ;i<n;i++)
             printf(" %d",a[i]);
         printf("\n");
         return ;
     }

     ;i<=n;i++)
     {
          && isprime[ a[cur-]+i ] )
         {
             vis[i]=;a[cur]=i;
             dfs(cur+);
             vis[i]=;
         }
     }
 }
 int  main()
 {
     ;i<=;i++)   isprime[i]=true;
     isprime[]=isprime[]=false;
     ;i<=;i++)
     {
         if(isprime[i])
         {
             ;j+=i)
             {
                 isprime[j]=false;
             }
         }
     }
     ;
     while(~scanf("%d",&n))
     {
         if(flag) printf("\n");
         flag=;

         printf("Case %d:\n",++p);
         memset(vis,,sizeof(vis));

         a[]=;vis[]=;
         dfs();

     }
     ;
 }
上一篇:【翻译自mos文章】oracle支持在RDBMS HOME 下的 符号链接( Symbolic Links)吗?


下一篇:UVa 524 Prime Ring Problem(回溯法)