hdu/hdoj 1016 Prime Ring Problem

来源:互联网 发布:c语言基础知识视频教程 编辑:程序博客网 时间:2024/04/29 12:02

思路是dfs,处理上就不说了


#include <iostream>#include <stdio.h>#include <string.h>#include <list>using namespace std;int n;bool array[21];int ppp=1;void dfs();list<int> a;bool qqq(int x){    for (int i=2; i<x; ++i)        if (x%i==0)            return false;    return true;    }int main(){        while (scanf("%d",&n)!=EOF)    {        a.clear();        for (int i=0; i<21; ++i)            array[i]=1;        array[1]=0;        a.push_back(1);        cout<<"Case "<<ppp<<":\n";        dfs();        cout<<endl;        ppp++;    }}void dfs(){    if (a.size()==n && qqq(a.front()+a.back()))    {        list<int>::iterator iter;        int t=0;        for (iter=a.begin(); iter!=a.end(); ++iter)        {            cout<<*iter;            t++;            if (t!=a.size())                cout<<" ";        }        cout<<endl;    }    else    {        for (int i=2; i<=n; ++i)        {            if (array[i]==1 && qqq(i+a.back()) )            {                array[i]=0;                a.push_back(i);                dfs();                            array[i]=1;                a.pop_back();            }        }    }        }


原创粉丝点击