您的位置:首页 > 其它

1020

2016-04-21 22:34 239 查看
简单题意:求关于素数环的题

解题思路:使用的是深度优先搜索方法

按照从小到大的搜索顺序搜索后的结果就是符合输出顺序的。

由于是20以内的数字,所以判断质数的方法是直接打表后一个简单的循环判断一下是否为质数
程序中mark数组是为了标记某个数字是否使用过了,num数组存储的是数字链表的存储顺序。
感想:深度优先里面比较简单的题
 

AC代码:

#include<stdio.h>

#include<math.h>

int a[25];

bool use[25];

int n;

 bool isprime(int num){

     int i;

     for(i=2;i<=sqrt(num+0.0);i++){

         if(num%i==0)

           return false;

    }

    return true;

 }

void DFS(int num){    int i;

     if(n==num&&isprime(1+a[n-1])){     for(i=0;i<n;i++){

            printf(i==n-1?"%d\n":"%d ",a[i]);

        }

    }

    else{

        for(i=2;i<=n;i++){

           if(!use[i]&&isprime(i+a[num-1])){

               a[num]=i;

               use[i]=true;                DFS(num+1);

               use[i]=false;

          }

         }

    }

 }

 void init(){

    int i;

for(i=0;i<n;i++){

        use[i]=false;

     }

     a[0]=1;

 }

 int main(){

    int t=0;

    while(scanf("%d",&n)!=EOF){

         init();

        printf("Case %d:\n",++t);

       DFS(1);

        puts("");

    }

 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: