题目链接:

http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=488

深搜模板:

  1. void dfs(int 当前状态)
  2. {
  3. if(当前状态为边界状态)
  4. {
  5. 记录或输出
  6. return;
  7. }
  8. for(i=;i<n;i++) //横向遍历解答树所有子节点
  9. {
  10. //扩展出一个子状态。
  11. 修改了全局变量
  12. if(子状态满足约束条件)
  13. {
  14. dfs(子状态)
  15. }
  16. 恢复全局变量//回溯部分
  17. }
  18. }

未优化的代码:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5. #include <algorithm>
  6. #include <iostream>
  7. using namespace std;
  8.  
  9. int a[]={};
  10. bool visit[];
  11. int n;
  12.  
  13. bool isprime(int x){
  14. int i;
  15. for(i=;i*i<=x;i++){
  16. if(x%i==)
  17. return false;
  18. }
  19. return true;
  20. }
  21.  
  22. void DFS(int x){
  23. int i;
  24. if(x==n-){
  25. if(isprime(a[x]+)){
  26. printf("");
  27. for(i=;i<n;i++)
  28. printf(" %d",a[i]);
  29. printf("\n");
  30. return ;
  31. }
  32. }
  33. for(i=;i<=n;i++){
  34. if(visit[i]==&&isprime(a[x]+i)){
  35. visit[i]=;
  36. a[x+]=i;
  37. DFS(x+);
  38. visit[i]=;
  39. }
  40. }
  41. }
  42. int main()
  43. {
  44. int i;
  45. int Case=;
  46. while(scanf("%d",&n),n){
  47. memset(visit,,sizeof(visit));
  48. printf("Case %d:\n",Case++);
  49. if(n%==||n==)
  50. DFS();
  51. else
  52. printf("No Answer\n");
  53. }
  54. return ;
  55. }

素数可以打表:

  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4. bool sushu[]={,
  5. ,,,,,,,,
  6. ,,,,,,,,
  7. ,,,,,,,,
  8. ,,,,,,,,
  9. ,,,,,,,
  10. };
  11. int a[], res[], n, flag;
  12. void dfs(int now)
  13. {
  14. int i;
  15. if (now==n&&sushu[a[n-]+a[n]])
  16. {
  17. flag = ;
  18. for (i = ; i<n; i++)
  19. cout<<a[i]<<" ";
  20. cout<<endl;
  21. }
  22. else
  23. {
  24. for (i = ; i<=n; i++)
  25. if (!res[i]&&sushu[i+a[now-]])
  26. {
  27. res[i] = ;
  28. a[now] = i;
  29. dfs(now+);
  30. res[i] = ;
  31. }
  32. }
  33. }
  34. int main()
  35. {
  36. int N;
  37. N=;
  38. while (cin>>n&&n)
  39. {
  40. flag = ;
  41. a[]=a[n]=;
  42. cout<<"Case "<<N++<<":"<<endl;
  43. if ((n-)&||n==)
  44. dfs();
  45. if (flag)
  46. cout<<"No Answer\n";
  47. }
  48. return ;
  49. }

NYoj 素数环(深搜入门)的更多相关文章

  1. HDU 1016(素数环 深搜)

    题意是说对一个长度为 n 的数环进行排列,使得相邻两数的和为素数,按从小到大的顺序依次输出. 因为是环,所以总能调整成以 1 为序列首输出.用深度优先搜索的方法即可.在判断素数时由于 n 小于 20, ...

  2. Prime Ring Problem + nyoj 素数环 + Oil Deposits + Red and Black

    Prime Ring Problem Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) ...

  3. NYOJ 10 skiing (深搜和动归)

    skiing 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描写叙述 Michael喜欢滑雪百这并不奇怪. 由于滑雪的确非常刺激.但是为了获得速度.滑的区域必须向下倾斜.并且 ...

  4. POJ 2488:A Knight's Journey 深搜入门之走马观花

    A Knight's Journey Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 35342   Accepted: 12 ...

  5. POJ 2386 DFS深搜入门

    题目链接 Time Limit: 1000MS Memory Limit: 65536K Description Due to recent rains, water has pooled in va ...

  6. NYoj 部分和问题(深搜经典)

    题目链接: http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=1058 #include <stdio.h> ], vis[], co ...

  7. DFS 深搜专题 入门典例 -- 凌宸1642

    DFS 深搜专题 入门典例 -- 凌宸1642 深度优先搜索 是一种 枚举所有完整路径以遍历所有情况的搜索方法 ,使用 递归 可以很好的实现 深度优先搜索. 1 最大价值 题目描述 ​ 有 n 件物品 ...

  8. 本BLOG简介(内有一道UVa524素数环进阶版)【B001】

    [B001]Hi,大家好,今天我的博客第一天开通,今天奉上开博题,出自首都师师范大学附属中学OJ(题号未知在练习场中)原题为UVa524,题目要求如下: [难度B]—————————————————— ...

  9. HDU1016 素数环---(dfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=1016 Sample Input 6 8   Sample Output Case 1: 1 4 3 2 5 6 ...

随机推荐

  1. 《SAS编程和数据挖掘商业案例》学习笔记# 19

    继续<SAS编程与数据挖掘商业案例>学习笔记,本文側重数据处理实践.包含:HASH对象.自己定义format.以及功能强大的正則表達式 一:HASH对象 Hash对象又称散列表,是依据关键 ...

  2. CSS设计指南之理解盒子模型

    原文:CSS设计指南之理解盒子模型 一.理解盒模型 每一个元素都会在页面上生成一个盒子.因此,HTML页面实际上是由一堆盒子组成的.默认情况下,每个盒子的边框不可见,背景也是透明的,所以我们不能直接看 ...

  3. HTML的标签使用

    <p>段落标签</p>:段落标签 <hx>标题标签</hx>:标题标签,x代表1-6 <em>斜体</em>:显示的字体是斜的 ...

  4. sql server 数据库 只有mdf文件,如何附加

    直接附加就可以,SQL 会提示LOG文件找不到,可删除提示的错误行,只附加MDF文件,附加成功后,SQL会自动创建LOG文件.

  5. 最简单的视音频播放演示样例8:DirectSound播放PCM

    ===================================================== 最简单的视音频播放演示样例系列文章列表: 最简单的视音频播放演示样例1:总述 最简单的视音频 ...

  6. c语言实现hashtable,相似C++的map和iOS的NSDictionary

    跟线性数组和链表不同.HashTable是高速查找的数据结构.本文中的HashTable使用链表处理数组. 该HashTable能够指定table的长度.提供了遍历的方法. 包含table的长度的选择 ...

  7. RecyclerView0基于使用

    (转载请注明出处:http://www.kennethyo.me/post/android/recyclerviewchu-ji-shi-yong) RecyclerView是Android在v7包中 ...

  8. html5中关于input使用方法的改变

    測试环境:Firefox 10.0.Safari 5.1.Opera 11.61, Chrome 14.0.835.202 自己測试的时候都有写在form表单里,有提交button验证.由于对博客使用 ...

  9. SSH深度历险记(八) 剖析SSH核心原则+Spring依赖注入的三种方式

           于java发育.一类程序猿必须依靠类的其他方法,它是通常new依赖类的方法,然后调用类的实例,这样的发展问题new良好的班统一管理的例子.spring提出了依赖注入的思想,即依赖类不由程 ...

  10. Python标准库09 当前进程信息 (部分os包)

    原文:Python标准库09 当前进程信息 (部分os包) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们在Linux的概念 ...