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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 黑凉粉煮稀了怎么办 轮速传感器坏了怎么办 黑魂3被入侵了怎么办 轮胎螺丝滑牙了怎么办 gta5ol寻宝任务退出了怎么办 gta5线上模式买房子之后怎么办 开摩托车忘记带安全头盔怎么办 gta不想要车了怎么办 空气滤芯进水会怎么办 车胎扎了个钉子怎么办 德罗索没导弹了怎么办 CF手雷包不能用怎么办 cfAK爆头碰到狙怎么办 玩cf网络延迟高怎么办 逆水寒装备分解错了怎么办 轴与孔间隙过大怎么办 小孩眼睛被打了怎么办 玩王者荣耀手机屏幕竖着怎么办 棉被被老鼠尿湿怎么办 打完子弹能下来怎么办 怪物猎人 弩子弹打完了怎么办 烤瓷牙龈发黑了怎么办 做彩超前喝水了怎么办 胸贴过敏红痒怎么办 芡粉里面有虫了怎么办 勾芡淀粉放多了怎么办 剁排骨没有好刀怎么办 硬币掉进档位里怎么办 魅族mx5手机太卡怎么办 华为m9手机声音小怎么办 放卡的地方堵住怎么办 美图m8蓝屏了怎么办 美图m8手机蓝屏怎么办 美图m6s手机白屏怎么办 魅蓝2开不开机怎么办 魅族手机主键没反应怎么办 魅族手机主键失灵怎么办 手机4g网络不稳定怎么办 华为m9收不到手机信息怎么办 华为手机wifi信号弱怎么办 手机连接wifi信号差怎么办