杭电ACM1016(dfs)

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

题目大意:题目给出一个小于20的数字,将1到这个数字的所有数字围成一个圆,要求所有相邻数字之和都是素数。然后按照顺时针的顺序将这个数字序列输出。

解题思路:dfs,遍历每一种情况。

AC代码:

#include 
using namespace std;
int prime[40]={0,1,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0};//因为数字规模比较小,因此手动打素数表
int n;
bool visit[25];
int a[25];
void dfs(int num)
{
	if(num==n&&prime[a[0]+a[num-1]])
	{
		for(int i=0;i<=num-1;i++)
		{
			if(i!=num-1)
				cout<>n)
	{
		count++;
		cout<<"Case "<


你可能感兴趣的:(搜索)