如下的10个格子(图片在压缩文件里)
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)

一共有多少种可能的填数方案?

请填写表示方案数目的整数。

思路:这道题目其实思路蛮多的。最常规的就是全排列之后判断是否符合条件。但是那样判断条件特别多,容易遗漏或者写错。用dfs好写一些,并且判断条件少。将格子看作是一个3行4列的迷宫,从(1,2)开始走到(3,4)结束。每次填空的时候判断一下是否符合条件就可以了。
代码如下:

#include<bits/stdc++.h>
#define ll long long
using namespace std;const int maxx=11;
int d[][2]={{1,0},{0,1},{-1,0},{0,-1},{1,1},{-1,1},{1,-1},{-1,-1}};
bool vis[maxx];
int f[maxx][maxx];
int ans=0;inline void dfs(int x,int y)
{if(x==3&&y==4){ans++;return ;}if(y==5){dfs(x+1,1);return ;}for(int i=0;i<=9;i++){if(vis[i]==0){int flag=1;for(int k=0;k<8;k++){int tx=x+d[k][0];int ty=y+d[k][1];if(f[tx][ty]==-1) continue;if(abs(f[tx][ty]-i)==1) {flag=0;break;}}if(flag) {f[x][y]=i;vis[i]=1;dfs(x,y+1);f[x][y]=-1;vis[i]=0;}}}
}
int main()
{memset(vis,0,sizeof(vis));memset(f,-1,sizeof(f));ans=0;dfs(1,2);cout<<ans<<endl;
}

答案是1580.
努力加油a啊

16年蓝桥杯省赛-方格填数(dfs+回溯)相关推荐

  1. [蓝桥杯2016初赛]方格填数-next_permutation

    代码如下: #include <iostream> #include <algorithm> using namespace std;int main() {int a[10] ...

  2. 蓝桥杯2015决赛-方格填数-枚举 or dfs

    题目描述 在2行5列的格子中填入1到10的数字. 要求:相邻的格子中的数,右边的大于左边的,下边的大于上边的. 如下图所示的2种,就是合格的填法. 请你计算一共有多少种可能的方案. 输出 请输出该整数 ...

  3. [蓝桥杯2016初赛]方格填数

    正如题目,我们要保证相邻的数不相连就行了,一共要填十个数. 下面是我的思路,供大家参考一下, 我把上面的各子放进了这个5*6的矩形,其中标记1–10的分别是要填数的各格子,一开始我先初始化这个二维数组 ...

  4. c语言六角填数蓝桥杯答案,六角填数(全排列)蓝桥杯真题

    六角填数(全排列)蓝桥杯真题 六角填数(全排列)蓝桥杯真题 如图所示六角形中填入1-12的数字,使每条直线上的数字和相等,图中已经填好了3个数字,请你计算*号数字是多少 蓝桥杯老套路,经常这样考全排列 ...

  5. 蓝桥杯真题——蛇形填数(c语言)

    目录 一.题目描述 二.解题思路 三.程序操作 一.题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 如下图所示,小明用从 1 开始的正整数"蛇形" ...

  6. 六角填数c语言程序,蓝桥杯历届-六角填数

    标题:六角填数 如图[1.png]所示六角形中,填入1~12的数字. 使得每条直线上的数字之和都相同. 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少? 请通过浏览器提交答案,不要填 ...

  7. [蓝桥杯2016决赛]七星填数-next_permutation枚举

    题目描述 如下图所示: 在七角星的14个节点上填入1~14 的数字,不重复,不遗漏.要求每条直线上的四个数字之和必须相等. 图中已经给出了3个数字.请计算其它位置要填充的数字,答案唯一. 填好后,请提 ...

  8. 2016蓝桥杯省赛---java---C---8(冰雹数)

    题目描述 任意给定一个正整数N, 如果是偶数,执行: N / 2 如果是奇数,执行: N * 3 + 1生成的新的数字再执行同样的动作,循环往复.通过观察发现,这个数字会一会儿上升到很高, 一会儿又降 ...

  9. [蓝桥杯2015决赛]五星填数-枚举+数论

    解题思路: 对于一种符合题意的情况,旋转和对称之后结果也是一样,所以我们要除去旋转(/5)和对称(/2)的情况,所以结果要除以10 代码如下: #include <iostream> #i ...

最新文章

  1. Ext.Net学习笔记06:Ext.Net DirectEvents用方补充
  2. 日常工作问题的处理流程
  3. 连接MySQL数据库时报 Public Key Retrieval is not allowed 异常
  4. Spring Boot 与 Java 对应版本,以下表格由官方网站总结。
  5. opencv 直方图_OpenCV-Python 直方图-3:二维直方图 | 二十八
  6. Android开发中的SQLite事务处理,即beginTransaction()方法
  7. 六、openstack安装之Horizon篇
  8. 旅行商问题(TSP) 中国34个城市 经纬度平面坐标
  9. mysql绿色版安装、局域网访问配置
  10. 触发器在计算机中的作用,d触发器的原理是什么_d触发器的功能及作用
  11. Abp 添加阿里云短信发送
  12. 虚拟机不能清空回收站_回收站不能清空怎么办?清空回收站无反应的解决方法...
  13. IE浏览器插件ActiveX的制作以及Google 调用此插件
  14. 小瘦牛虚拟无线路由器官方版
  15. java----判断闰年和平年
  16. 文本换行符/空格符怎么在HTML中进行转换?
  17. 开源的Android视频播放器
  18. 关于safiry开启无痕浏览时本地存储的处理
  19. Codeforces1509 B. TMT Document(思维)
  20. Ten Simple Rules for Effective Statistical Practice

热门文章

  1. VS项目属性的一些配置项的总结
  2. C#调用C++Dll封装时遇到的一系列问题 参考
  3. Android recyclerView/listview的点击变色、点击换背景颜色
  4. Error:Could not resolve all files for configuration ':app:preDebugCompileClasspath'. Could not fin
  5. Android Studio安装插件提示was not installed: Cannot download的解决办法(仅限AS2.2版本以上)
  6. html 自动滚动标签,HTML滚动标签(marquee标签)
  7. 民非企业盈利怎么处理_对企业法人无力偿还债务时要怎么处理,如何解决?
  8. 原生js增加或者删除class
  9. OpenStack部署之小结
  10. Linux shell命令最常用的快捷键