这是一道典型的DFS题目。幻想有n个箱子,每次都向箱子里扔一个数,(当然第一个是必定是1,因为题目要求按字典序输出)。判断输出的条件就是,当我移动到第n+1个箱子的时候,就要return了,当然还要判断是否能输出。。怎么判断能否输出呢?题目说:组成一个圈子,a[j]+a[j+1]都必须是质数。但是,如果我们在n+1的时候再判断这个,已经很迟了,递归次数太多了。所以,应该是当满足这个条件,我才递归。

当然,a[1]+a[n]是需要在输出的时候判定的

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int n;
int book[30];
int a[30];
int prime[45];
int case_time;
void dfs(int step)
{
if (step == n+1)//是否return
{
if (prime[a[1]+a[n]])//判断是否能输出
{
int i;
for (i=1;i<n;i++)
{
//printf ("%d ",a[i]); presensation error
//注意这样输出会结尾的时候多一个空格
printf ("%d ",a[i]);
}
printf ("%d\n",a[n]);
}
return ;
}
else
{
int i;
for (i=1;i<=n;i++)
{
if (book[i]==0&&prime[i+a[step-1]])
{
a[step]=i;
book[i]=1;
dfs(step+1);
book[i]=0;
}
}
return ;
}
}
int main()
{
prime[2]=1;
prime[3]=1;
prime[5]=1;
prime[7]=1;
prime[11]=1;
prime[13]=1;
prime[17]=1;
prime[19]=1; //prime[21]=1; 21不是质数。。。原谅我error了
prime[23]=1;
prime[27]=1;
prime[29]=1;
prime[31]=1;
prime[37]=1;
//n<20 19+19 起码打到40的表
while (scanf ("%d",&n)!=EOF)
{
case_time++;
memset(book,0,sizeof(book));
//printf ("Case %d:\n",case_time);
printf("Case %d:\n",case_time);
a[1]=1;
book[1]=1;
dfs(2);
printf ("\n");
}
//system("pause");
return 0;
}

 我觉得注意的就是多了一个空格那里,实在太坑

最新文章

  1. Range Sum Query - Immutable
  2. elk
  3. first
  4. Project简介
  5. [转]不正当使用HashMap导致cpu 100%的问题追究
  6. C# LLSQL快速查询框架
  7. HDU-2686 Matrix 多进程DP
  8. ETL构建数据仓库五步法
  9. 在Eclipse中新建Maven项目
  10. Python学习--20 Web开发
  11. An Introduction to Variational Methods (5.2)
  12. ECMAScript 6 proxies
  13. 【Java系列】Eclipse与Tomcat
  14. [HNOI 2011]XOR和路径
  15. C++标准库之右值引用相关:引用折叠
  16. Android开发学习之RecyclerView
  17. 【Java】NO.84.Project.1.OCEA.1.001-【Dreamcar】-
  18. burpsuite扩展集成sqlmap插件
  19. javascript闭包获取table中tr的索引 分类: JavaScript 2015-05-04 15:10 793人阅读 评论(0) 收藏
  20. Centos6.6下安装nginx1.6.3

热门文章

  1. shell 一次性杀掉相同名称的进程
  2. Hbase监控指标项
  3. hive(3)HiveQL数据定义
  4. MYSQL安装报错需要.NET4.0
  5. 浅谈Python-IO多路复用(select、poll、epoll模式)
  6. 2018-2019-2 《网络对抗技术》Exp8 Web基础 20165326
  7. T-MAX组--项目冲刺(第四天)
  8. 【转】利用Python将多个PDF合并为一个
  9. flink 读JDQ和写JDQ的流程
  10. 数据库中的同义词synonym