hdu 1016 经典的dfs搜索 acm 杭电 OJ

来源:互联网 发布:武汉java工作好找吗 编辑:程序博客网 时间:2024/04/19 21:07

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1016

采用dfs思想进行遍历

#include<iostream>#include<cstring>#include<math.h>using namespace std;int n;int a[20];int num=1;bool isPrime(int m){    for(int i=2;i<=sqrt((double)m);i++){        if(m%i==0) return false;    }    return true;}void print(int a[]){    for(int i=1;i<n;i++)        cout<<a[i]<<" ";    cout<<a[n];    cout<<endl;}bool ifExist(int k){    for(int i=2; i<=n;i++) if(a[i]==k) return true;    return false;}void dfs(int m){            a[num++]=m;    if(num==n+1){        num--;        if(isPrime(a[1]+a[num])){            print(a);        }        a[num]=-1;        return ;    }    for(int i=2;i<=n;i++)    {                    if(!ifExist(i)&&i!=m&&isPrime(m+i)){            dfs(i);        }    }    a[num]=-1;    num--;}int main(){    int i=1;    while(cin>>n){        cout<<"Case "<<i<<":"<<endl;        num=1;        dfs(1);        cout<<endl;        i++;    }    return 0;}


0 0
原创粉丝点击