答案:416

用next_permutation()全部排列的话会超时

所以用dfs搜索,只搜索前三行就好,前三行确定之后,第四行也就确定

  1. #include<iostream>
  2. #include<string>
  3. #include<string.h>
  4. #include<algorithm>
  5. using namespace std;
  6. int vis[],a[][];
  7. int ans=;
  8. int check(int x,int y)
  9. {
  10. if(x<)//只枚举到前三行就可以,如果前三行符合条件,那么最后一行四个数之和一定是34
  11. {
  12. if(y<)//一行还没有放满4个,前三个数可以随便取
  13. return ;
  14. if(a[x][]+a[x][]+a[x][]+a[x][]==)
  15. return ;
  16. else
  17. {
  18. return ;
  19. }
  20. }
  21. else//x==3
  22. {
  23. if(y==)//判断第1列和副对角线
  24. {
  25. if((a[][]+a[][]+a[][]+a[][]!=)||(a[][]+a[][]+a[][]+a[][]!=))
  26. return ;
  27. }
  28. if(y==||y==)//判断第2列和第3列
  29. if(a[][y]+a[][y]+a[][y]+a[][y]!=)
  30. return ;
  31. if(y==)//判断第4列和主对角线
  32. if((a[][y]+a[][y]+a[][y]+a[][y]!=)||(a[][]+a[][]+a[][]+a[][])!=)
  33. return ;
  34. else
  35. {
  36. return ;
  37. }
  38.  
  39. }
  40.  
  41. }
  42. void dfs(int x,int y)
  43. {
  44. if(x==)
  45. {
  46. ans++;
  47. return ;
  48. }
  49. // else if(y>3)
  50. // dfs(x+1,0);
  51. else
  52. {
  53. for(int i=;i<=;i++)
  54. {
  55. if(vis[i]==)
  56. {
  57. vis[i]=;
  58. a[x][y]=i;
  59. if(check(x,y))
  60. {
  61. if(y<)
  62. dfs(x,y+);
  63. else
  64. dfs(x+,);
  65. }
  66. vis[i]=;
  67. }
  68.  
  69. }
  70. }
  71.  
  72. }
  73. int main()
  74. {
  75. a[][]=vis[]=;
  76. dfs(,);
  77. cout<<ans<<endl;
  78. system("pause");
  79. return ;
  80. }

四阶幻方-蓝桥杯-DFS的更多相关文章

  1. 方格填数--蓝桥杯---dfs

    答案:1580 相似题目:N皇后问题 注意要枚举的是什么 #include<iostream> #include<string.h> using namespace std; ...

  2. 蓝桥杯dfs搜索专题

    2018激光样式 #include<bits/stdc++.h> using namespace std; /* dfs(i) 第i个激光机器 有两种选择:vis[i-1] == 0 时 ...

  3. 寒假作业---蓝桥杯---DFS

    题目描述 现在小学的数学题目也不是那么好玩的. 看看这个寒假作业: 每个方块代表1~13中的某一个数字,但不能重复. 比如: 6  + 7 = 13 9  - 8 = 1 3  * 4 = 12 10 ...

  4. 穿越雷区--蓝桥杯--DFS/BFS

    题目描述 X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废. 某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征),怎样走才能路径最短? ...

  5. 蓝桥杯-四阶幻方(DFS)

    标题:四阶幻方 把1~16的数字填入4x4的方格中,使得行.列以及两个对角线的和都相等,满足这样的特征时称为:四阶幻方. 四阶幻方可能有很多方案.如果固定左上角为1,请计算一共有多少种方案. 比如: ...

  6. [蓝桥杯2015决赛]四阶幻方(DFS + 剪枝)

    题目描述 把1~16的数字填入4x4的方格中,使得行.列以及两个对角线的和都相等,满足这样的特征时称为:四阶幻方. 四阶幻方可能有很多方案.如果固定左上角为1,请计算一共有多少种方案. 比如: 1  ...

  7. java实现第六届蓝桥杯四阶幻方

    四阶幻方 把1~16的数字填入4x4的方格中,使得行.列以 及两个对角线的和都相等,满足这样的特征时称 为:四阶幻方. 四阶幻方可能有很多方案.如果固定左上角为1 ,请计算一共有多少种方案. 比如: ...

  8. 蓝桥杯---数独(模拟 || dfs)

    [编程题](满分33分) "数独"是当下炙手可热的智力游戏.一般认为它的起源是"拉丁方块",是大数 学家欧拉于1783年发明的. 如图[1.jpg]所示:6x6 ...

  9. 蓝桥杯---剪格子(DFS&BFS)(小总结)

    问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |10* 1|52| +--****--+ |20|30* 1| *******--+ | 1| 2| 3| +--+ ...

随机推荐

  1. Python turtle库详解

    Python turtle库详解 Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在 ...

  2. centos平台搭建Oracle11g数据库+远程连接

    经过了几天的摸爬滚打,终于成功的能在宿主机上(window10上的Plsql)去成功的连上虚拟机上的centos数据库 下面将自己的经验分享给大家: 具体的centos7.centos6上安装Orac ...

  3. HDU 6631 line symmetric 计算几何

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6631 题意:共\(T\)组数据,每组数据给出\(n\)个点的坐标,这\(n\)个点按顺序给出,相邻的点 ...

  4. UIButton按钮的高亮状态颜色

    首先是adjustsImageWhenHighlighted属性的正确使用: UIButton的adjustsImageWhenHighlighted属性是当UIButton设置了背景图片时,并且没有 ...

  5. JAVA基础学习(1)之计算

    1.0计算机与编程语言 1.0.1计算机与编程语言 计算机解决问题 人:What to do 计算机:How to do 编程语言 描述要求计算机如何做事情的过程或方法 算法 计算=算法—>编程 ...

  6. 201771010135 杨蓉庆《面对对象程序设计(java)》第十二周学习总结

    1.实验目的与要求 (1) 掌握Java GUI中框架创建及属性设置中常用类的API: (2) 掌握Java GUI中2D图形绘制常用类的API: (3) 了解Java GUI中2D图形中字体与颜色的 ...

  7. cmake 的使用

    官网教程:https://cmake.org/cmake-tutorial/ 第一个简单的例子 源文件:tutorial.cpp // A simple program that computes t ...

  8. 11: Django + gunicorn + Nginx 的生产环境部署

    1.1 gunicorn介绍   1.Gunicorn 1. Gunicorn是使用Python实现的WSGI服务器, 直接提供了http服务, 并且在woker上提供了多种选择, gevent, e ...

  9. P1217

    最快的办法就是打表了...不然怎么都会TLE. 先计算出给定最大范围内的所有回文质数: #include <bits/stdc++.h> using namespace std; #def ...

  10. VMware虚拟磁盘修复

    最近VMware虚拟机老是断掉提示无法完成同步,后来提示虚拟磁盘需要修复,经过一番查询,找到了相关检查与修复口令,先记录如下. vmware-vdiskmanager -R “PATH” 说明: PA ...