2016蓝桥杯C/C++省赛B组第6题 方格填数 DFS
来源:互联网 发布:mysql读写分离 编辑:程序博客网 时间:2024/04/29 13:34
方格填数
如下的10个格子
+--+--+--+
| | | |
+--+--+--+--+
| | | | |
+--+--+--+--+
| | | |
+--+--+--+
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
这个题其实跟经典DFS问题八皇后没什么本质上的区别,注意下左上和右下的两个缺口的处理,不要越界就可以了
#include <cstdio>#include <queue>#include <map>#include <cmath>#include <vector>#include <cstring>#include <iostream>#include <stack>#include <algorithm>using namespace std;const int r = 3, c = 4;int mapp[10][10];int numv[15];int cou;int dir[4][2] = { 0, -1, -1, -1, -1, 0, -1, 1 };bool check(int x, int y, int n) {for (int i = 0; i < 4; i++) {int nx = x + dir[i][0];int ny = y + dir[i][1];if (nx >= 0 && nx < r && ny >= 0 && ny < c) {//相邻的点有相邻的数字//还没有填过数字的格子-10 肯定不会等于当前格子0-9 +1或-1if (mapp[nx][ny] == n - 1 || mapp[nx][ny] == n + 1) {return false;}}}return true;}void dfs(int dep, int pos) {//(2,3)为缺口,结束if (dep == 2 && pos == 3) {cou++;#if 0for (int i = 0; i < r; i++) {for (int j = 0; j < c; j++) {printf("%4d", mapp[i][j]);}puts("");}puts("");system("pause");#endifreturn;}if (pos >= c) {dfs(dep + 1, 0);}else {for (int i = 0; i <= 9; i++) {//这个数i没用过,并且没有越出格子if (!numv[i] && check(dep, pos, i)) {numv[i] = true;mapp[dep][pos] = i;dfs(dep, pos + 1);mapp[dep][pos] = -10;numv[i] = false;}}}}int main(){//初始化为一个比较大的负数,那么在for (int i = 0; i <= 5; i++) {for (int j = 0; j <= 5; j++) {mapp[i][j] = -10;}}memset(numv, false, sizeof(numv));cou = 0;dfs(0, 1); //(0,0)为缺口,所以从(0,1)开始cout << cou << endl; //1580return 0;}
2 1
- 2016蓝桥杯C/C++省赛B组第6题 方格填数 DFS
- 2016蓝桥杯c/c++ B组 省赛 方格填数
- 2016蓝桥杯C/C++省赛 方格填数(深搜DFS)
- 蓝桥杯_2016年第七届C/C++B组—6.方格填数 【DFS】
- 第七届蓝桥杯省赛C语言B组第6题 方格填数
- 第七届C/C++B-方格填数 DFS
- 2016-蓝桥杯省赛-C语言大学B组_方格填数_【DFS&全排列】
- 2016 蓝桥杯省赛C语言B组 第六题 方格填数
- 【2016 蓝桥杯省赛C语言B组 第六题 方格填数】+ 快排
- 蓝桥杯 2016-省赛-C语言大学A组-3题方格填数
- 2014 蓝桥杯 预赛 c/c++ 本科B组 第七题:六角填数【暴力】or【DFS】
- 蓝桥杯方格填数DFS
- 2016年第七届蓝桥杯C/C++A组第三题---方格填数
- 2014 蓝桥杯 预赛 c/c++ 本科B组 第7题:六角填数(12')
- 2014 蓝桥杯 预赛 c/c++ 本科B组 第7题:六角填数(12')
- 2016年第七届蓝桥杯C/C++程序设计本科B组省赛 方格填数(结果填空)
- 2016年第七届蓝桥杯C/C++程序设计本科B组省赛-方格填数(结果填空)
- 第七届蓝桥杯软件类省赛真题-C-B-6_方格填数
- Python-数据结构之单链表的实现
- 何为分布式计算
- Android Studio中有六种依赖(Compile,Provided,APK,Test compile,Debug compile,Release compile)
- jQuery之bind()、live()和delegate()的小结
- php设计模式学习系列(七)--原型对象
- 2016蓝桥杯C/C++省赛B组第6题 方格填数 DFS
- Eigen保存矩阵
- eclipse搭建JNI开发环境
- 里氏替换:爱恨纠葛的父子关系
- float型数据在内存中的存储形式
- AIDL进程间通信
- 高级工作流的启动方法
- 解决图片上传到服务器旋转90度的问题(图片倒置)
- II rotaluclaCcisaB.227