一,第六届蓝桥杯C语言初赛

答案:1580

相似题目:N皇后问题

注意要枚举的是什么

  1. #include<iostream>
  2. #include<string.h>
  3. using namespace std;
  4. int a[][],vis[],dir[][]={{,-},{-,-},{-,},{-,}};
  5. int cnt=;
  6. int check(int x,int y,int num)
  7. {
  8. for(int i=;i<;i++)
  9. {
  10. int tx,ty;
  11. tx=x+dir[i][];
  12. ty=y+dir[i][];
  13. if(tx>=&&tx<&&ty>=&&ty<)
  14. {
  15. if(a[tx][ty]==num-||a[tx][ty]==num+)//不相邻
  16. return ;
  17. }
  18. }
  19. return ;
  20. }
  21.  
  22. void dfs(int x,int y)
  23. {
  24. if(x==&&y==)
  25. {
  26. cnt++;
  27. return;
  28. }
  29. if(y>)//当前行搜索完
  30. dfs(x+,);
  31. else
  32. {
  33. for(int i=;i<;i++)
  34. {
  35.  
  36. if(check(x,y,i)&&!vis[i])//在棋盘上并且没有相邻/这个数字没有用过
  37. {
  38. a[x][y]=i;
  39. vis[i]=;
  40. dfs(x,y+);
  41. a[x][y]=;//回溯
  42. vis[i]=;
  43. }
  44. }
  45. }
  46. }
  47. int main()
  48. {
  49. memset(vis,,sizeof(vis));
  50. for(int i=;i<;i++)
  51. {
  52. for(int j=;j<;j++)
  53. {
  54. a[i][j]=;
  55. }
  56. }
  57. dfs(,);
  58. cout<<cnt<<endl;
  59. return ;
  60. }

二、第六届C语言蓝桥杯决赛

答案:42

题解一:模拟+暴力

  1. //答案:42
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<string.h>
  5. using namespace std;
  6. int main()
  7. {
  8. int a[],mp[][];
  9. mp[][]=mp[][]=;//处理边界
  10. for(int i=;i<;i++)
  11. mp[][i]=;
  12. for(int i=;i<;i++)
  13. a[i]=i+;
  14. int ans=;
  15. do
  16. {
  17. if(a[]<a[]&&a[]<a[]&&a[]<a[]&&a[]<a[])
  18. {
  19. if(a[]<a[]&&a[]<a[]&&a[]<a[]&&a[]<a[])
  20. {
  21. if(a[]<a[]&&a[]<a[]&&a[]<a[]&&a[]<a[]&&a[]<a[])
  22. ans++;
  23. }
  24. }
  25. }while(next_permutation(a,a+));
  26. cout<<ans<<endl;
  27. //system("pause");
  28. return ;
  29. }

题解二:DFS(过程同上题)

  1. #include<iostream>
  2. #include<string>
  3. #include<string.h>
  4. using namespace std;
  5. int a[][], vis[];
  6. int cnt = ;
  7. int check(int x, int y)
  8. {
  9. if(x==&&y==)//注意边界
  10. return ;
  11. else if(x==&&y==&&a[][]>a[][])
  12. return ;
  13. else if(x==&&a[x][y-]<a[x][y])
  14. return ;
  15. else if(x==&&a[x][y-]<a[x][y]&&a[x-][y]<a[x][y])
  16. return ;
  17. else
  18. {
  19. return ;
  20. }
  21.  
  22. }
  23.  
  24. void dfs(int x, int y)
  25. {
  26. if (x == )//棋盘放满
  27. {
  28. cnt++;
  29. return;
  30. }
  31. if (y > )//当前行搜索完
  32. dfs(x + , );
  33. else
  34. {
  35. for (int i = ; i <= ; i++)
  36. {
  37.  
  38. if (vis[i]==)//这个数字没有用过,并且符合条件
  39. {
  40. a[x][y] = i;
  41. vis[i] = ;
  42. if(check(x,y))
  43. dfs(x, y + );
  44. vis[i] = ;//回溯
  45. }
  46. }
  47. }
  48. }
  49. int main()
  50. {
  51. memset(vis, , sizeof(vis));
  52. dfs(, );
  53. cout << cnt << endl;
  54. system("pause");
  55. return ;
  56. }

方格填数--蓝桥杯---dfs的更多相关文章

  1. 蓝桥杯比赛javaB组练习《方格填数》

    方格填数 如下的10个格子   +--+--+--+   |  |  |  |+--+--+--+--+|  |  |  |  |+--+--+--+--+|  |  |  |+--+--+--+ ( ...

  2. DFS(深度优先搜索遍历求合格条件总数)--07--DFS--蓝桥杯方格填数

    此题方法多种,我用规范的DFS来求解 题目:方格填数 如下的10个格子,填入0~9的数字.要求:连续的两个数字不能相邻. (左右.上下.对角都算相邻)一共有多少种可能的填数方案?   输出 请填写表示 ...

  3. java实现第七届蓝桥杯方格填数

    方格填数 题目描述 如下的10个格子 +--+--+--+ | | | | +--+--+--+--+ | | | | | +--+--+--+--+ | | | | +--+--+--+ (如果显示 ...

  4. java算法 蓝桥杯(题+答案) 方格填数

    6.方格填数  (结果填空) 如下的10个格子 (如果显示有问题,也可以参看[图1.jpg]) 填入0~9的数字.要求:连续的两个数字不能相邻.(左右.上下.对角都算相邻) 一共有多少种可能的填数方案 ...

  5. java算法 第七届 蓝桥杯B组(题+答案) 6.方格填数

    6.方格填数  (结果填空) 如下的10个格子 (如果显示有问题,也可以参看[图1.jpg]) 填入0~9的数字.要求:连续的两个数字不能相邻.(左右.上下.对角都算相邻) 一共有多少种可能的填数方案 ...

  6. 第七届蓝桥杯试题c/c++A组方格填数 回溯法

    方格填数如下的10个格子   +--+--+--+   |  |  |  |+--+--+--+--+|  |  |  |  |+--+--+--+--+|  |  |  |+--+--+--+(如果 ...

  7. 第七届蓝桥杯javaB组真题解析-方格填数(第六题)

    题目 /* 方格填数 如下的10个格子 +--+--+--+ | | | | +--+--+--+--+ | | | | | +--+--+--+--+ | | | | +--+--+--+ (如果显 ...

  8. 第七届蓝桥杯JavaB组——第6题方格填数

    解决方案:利用全排列和递归 使用Java中的集合API:HashMap ArrayList package com.lzp.lanqiaoseven.p6; import java.util.*; / ...

  9. c++_方格填数(最新方法)

      方格填数 如下的10个格子 +--+--+--+ | | | |+--+--+--+--+| | | | |+--+--+--+--+| | | |+--+--+--+ (如果显示有问题,也可以参 ...

随机推荐

  1. 使用pycharm运行调试scrapy

    摘要 Scrapy是爬虫抓取框架,Pycharm是强大的python的IDE,为了方便使用需要在PyCharm对scrapy程序进行调试 python PyCharm Scrapy scrapy指令其 ...

  2. django 1.8 官方文档翻译:13-12 验证器

    django 1.8 官方文档翻译:13-12 验证器 2015年09月20日 21:36:18 ApacheCN_飞龙 阅读数:639  https://blog.csdn.net/wizardfo ...

  3. input file 获取不到Request.Files 解决办法

    <input type="file" name="xxxxxxx"/>必须有“name”属性,否则在后台代码中用Request.Files是取不到值 ...

  4. 编写高质量代码改善C#程序的157个建议——建议30:使用LINQ取代集合中的比较器和迭代器

    建议30:使用LINQ取代集合中的比较器和迭代器 LINQ提供了类似于SQL的语法来实现遍历.筛选与投影集合的功能. static void Main(string[] args) { List< ...

  5. 引用母版页的内容页添加CSS文件

    在内容页当中定义一个类然后调用内中的方法即可 public static class addstyle{  //可以不用实例化 public static void addstylesheet(Pag ...

  6. C#winform拖动无边框窗体

    private bool isMouseLeftKeyDown = false; private Point mousePointToClient = new Point();//相对于本窗体鼠标位置 ...

  7. ASP.NET MVC 开源建站系统 ZKEACMS 推荐,从此网站“拼”起来

    一个挺有意思的项目,跟拼图一样的创建网站,先来几张GIF感受一下: 官方地址:http://www.zkea.net/zkeacms 下载地址:https://github.com/SeriaWei/ ...

  8. tomcat访问日志关闭

    在tomcat(实例)路径下[conf/server.xml]中修改,以下节点(注释掉该节点): tomcat catalina.out日志关闭 在tomcat(主目录)路径下[bin/catalin ...

  9. Stars in Your Window(线段树求最大矩形交)

    题目连接 http://poj.org/problem?id=2482 Description Fleeting time does not blur my memory of you. Can it ...

  10. Ubuntu 14.04.3 LTS如何安装谷歌输入法

    谷歌输入法项目主页:https://code.google.com/p/scim-googlepinyin/ 一,打开Ubuntu 的“Ubunru的软件中心”,在搜索里面输入“googlepinyi ...