简单深搜。每次对第step个位置进行测试,

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

{

if(第i个点没有被访问过,并且和为质数)

result[step]=i;   //则将这个数放入step的位置

visit[i]=1;           //并且对第 i  个数进行标记,以后不再访问

dfs(step+1);      //对下一个点按相同规则进行访问

}

我发现,深搜可以这样理解:        以某一个点为源点按确定的规则进行搜索。如果他的下一个邻接点可行(没有被访问过,且符合规则),则记录这个点,并标记。 然后,重新以该点为新的源点进行搜索。              如果不可行,则退回到上一步,继续按规则进行所示。                 直到满足结束条件。

DFS即,每次一搜到底,不行就重新回溯。找一个方向或节点,再一搜到底。不行再回溯。

代码:

#include<stdio.h>
#include<string.h>

int result[20];
bool isprime[]={0,0,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};
bool visit[20];
int n;
void dfs(int step)
{
 int i;
 if(step==n+1)
 {
  if(isprime[result[n]+1])     //如果最后一个数(第n个数)和第一个数之和是质数
  {
   for(i=1;i<=n;i++)
   {
    if(i==n) printf("%d\n",result[i]);
    else
    printf("%d ",result[i]);
   }
  }
  return ;
 }
 for(i=2;i<=n;i++)
 {
  if(!visit[i]&&isprime[i+result[step-1]])
  {
   result[step]=i;
   visit[i]=1;             //访问过就进行标记
   dfs(step+1);
   visit[i]=0;
   
  }
 }
}
int main()
{
 int count=1;
 while(scanf("%d",&n)!=EOF)
 {
  memset(visit,0,sizeof(visit));
  result[1]=1;
  printf("Case %d:\n",count++);
  dfs(2);
  printf("\n");
 }
 return 0;
}

转载于:https://www.cnblogs.com/zhangyabin---acm/archive/2012/03/04/2379093.html

第三道深搜-----------hdu1016相关推荐

  1. Go 分布式学习利器(15) -- Go 实现 深搜和广搜

    强化语法,回顾算法. 通过Go语言实现 深度优先搜索 和 广度优先搜索,来查找社交网络中的三度好友关系(三度指的是一个节点到 其相邻节点 到 其相邻节点的节点 ,图递增三层好友关系). 涉及到的Go语 ...

  2. 水管工游戏 (深搜)

    水管工游戏 本题依然是采用搜索,深搜,广搜都可以,本代码采用深搜,此题在搜索时需要增加一些判断条件以及下一步要搜索的位置即可. 代码如下: #include<stdio.h> int a[ ...

  3. Poj(2488),按照字典序深搜

    题目链接:http://poj.org/problem?id=2488 思路:按照一定的字典序深搜,当时我的想法是把所有的可行的路径都找出来,然后字典序排序. 后来,凡哥说可以在搜索路径的时候就按照字 ...

  4. [数据结构] 迷宫问题(栈和队列,深搜和广搜)

    代码: #include <iostream> #include <string.h> #include <stack> #include <queue> ...

  5. 迷宫问题最短捷径c语言深搜,迷宫问题 C语言实现(深搜)

    问题描述: 2015年05月21日 10:24:05 这是我自己出的一道题   其原型基于迷宫问题,用深搜来解决的!我就简单的说一说吧! 给定一个N * M 的迷宫!,1代表有障碍,0代表无障碍可通行 ...

  6. POJ-1724 深搜剪枝

    这道题目如果数据很小的话.我们通过这个dfs就可以完成深搜: void dfs(int s) {if (s==N){minLen=min(minLen,totalLen);return ;}for ( ...

  7. POJ2044 深搜+剪枝(云彩下雨)

    题意:        有一个城镇,是4*4的大小的,然后你控制一块云彩,2*2的,你每天可以有9种走的方法,上下左右,或者不动,走的时候可以走1或者2步,云彩所在的地方肯定会下雨,然后给你做多365天 ...

  8. hdu4876 深搜+(随机枚举剪枝)

    题意:       给你n个数,让你从选择k个数,然后排成一个环(k个数的顺序随意,但是排成一个环后就不能变了),然后可以在这个环上任意的找连续w个数(w<=k),可以找多次,得到一个值等于当前 ...

  9. 单词拼接 ----- 深搜

    先判断这些单词能不能构成 接龙 , 能的话在排序 , 然后深搜确定接龙 . 题解 : 如果先确定所有单词的首尾字母的个数 , 如果首字母个数等于尾字母个数就不用管了 , 如果发现首字母比尾字母大1那个 ...

最新文章

  1. pygame做的著名游戏_用python写游戏之2D跑酷游戏(一)
  2. 吴恩达深度学习代码_吴恩达深度学习笔记(58)-深度学习框架Tensorflow
  3. nutch开发(二)
  4. 计算机屏幕偏白,电脑屏幕显示泛白怎么修正
  5. 从Linux到Meego
  6. 哈希表添加哈希表(Hash Table,也叫散列表),是根据键(Key)而直接访问在内存存储位置的数据结构。typedef enum{ HASH_OK, -icoding
  7. 电脑缺失MSVCP110.dll文件
  8. docker-compose 实战案例
  9. mysql导入数据提前修改字段_复习MySQL③导入数据、检查及修改
  10. 【算法14】找出数组中两个只出现一次的数字
  11. Web前端开发要掌握的技能有哪些?
  12. 数据库服务器操作系统升级方案,PostgreSQL 数据库跨版本升级常用方案解析
  13. 我的世界1.12.2java下载_我的世界1.12.2.2中文版下载 我的世界1.12.2.2中文版单机游戏下载...
  14. 计算快递费系统(java版)
  15. Request和Response的概述及其方法
  16. 挣值管理名词(EV、AC、PV等)与公式详解
  17. UE4 Gameplay框架浅析笔记
  18. 深入理解 Mysql 锁
  19. C#中接口(Interface)与抽象类(abstract)的区别
  20. java小项目之贪吃蛇项目(图解超详细)

热门文章

  1. 保护 ASP.NET Web 部件页面
  2. ubuntu不启动图形界面
  3. linux awk 教程,Linux awk使用案例教程
  4. 脚本升级_手把手教你升级到Database 19c(3)| 终章教程
  5. vue main.js中引入js_web前端的同学不容错过,大厂Vue最佳实践总结,提高竞争力...
  6. sprintf的使用(和为n的回文数)
  7. 技术人生——解决问题的规律
  8. 如何提升业务稳定性?
  9. 如何实现Java类隔离加载?
  10. LNMP单机高并发的简单优化