蓝桥杯第七届 方格填数(dfs)
来源:互联网 发布:淘宝开虚拟网店流程 编辑:程序博客网 时间:2024/05/17 23:31
方格填数
如下的10个格子
+–+–+–+–+
| # | ? | ? | ? |
+–+–+–+–+
| ? | ? | ? | ? |
+–+–+–+–+
| ? | ? | ? | # |
+–+–+–+–+
#:不能填数字;?:需要填写数字的空格
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
#include<stdio.h>int visit[10];int flag[3][4];int map[3][4];int ans=0; void judge() { int dir[8][2]= {{0, 1}, {0, -1}, {1, 0}, {-1, 0}, {1, 1}, {1, -1}, {-1, 1}, {-1, -1}}; int i,j,k,x,y; int valid=1; for(i=0;i<3;i++) for(j=0;j<4;j++) { if(flag[i][j]==0) continue; for(k=0;k<8;k++) { x=i+dir[k][0]; y=j+dir[k][1]; if(x < 0||x > 2||y<0||y>3||flag[x][y]==0) continue; if(map[i][j]-map[x][y]==1) valid=0; } }if(valid!=0)ans++;return; } void dfs(int n) { int i,x,y; x=n/4;//获得所在行 y=n%4;//获得所在列 if(x==2&&y==3) judge();if(flag[x][y]!=0) //如果当前位置可填入数字for(i=0;i<10;i++){if(visit[i]==0){visit[i]=1;map[x][y]=i;dfs(n+1);visit[i]=0;} } else//当前位置不可填 dfs(n+1);return; } int main() { memset(map,0,sizeof(map));memset(visit,0,sizeof(visit));memset(flag,1,sizeof(flag)); flag[0][0]=0;flag[2][3]=0;dfs(0);printf("%d\n",ans);return 0; }
1 0
- 蓝桥杯第七届 方格填数(dfs)
- 蓝桥杯第七届方格填数
- 第七届C/C++B-方格填数 DFS
- 蓝桥杯 方格填数(DFS)
- 蓝桥杯方格填数DFS
- 蓝桥杯_2016年第七届C/C++B组—6.方格填数 【DFS】
- 蓝桥杯第七届个人赛方格填数
- 蓝桥杯-第七届Java语言B组-方格填数
- 蓝桥杯 第七届JavaB组真题 方格填数
- 蓝桥杯 第七届省赛试题 方格填数
- 第七届 蓝桥杯 省赛 第六题 方格填数(next_permutation)
- 第七届蓝桥杯 方格填数
- 方格填数(蓝桥杯)
- 蓝桥杯-第七届省赛javaB组-方格填数
- 蓝桥杯 方格填数
- 蓝桥杯 方格填数
- 蓝桥杯方格填数
- 蓝桥杯方格填数
- 399. Evaluate Division
- 跳转到AppStore评分
- Android studio 下打包jar包
- Android4.4 CTS测试Fail项修改总结(一)
- 详解Android中AsyncTask的使用
- 蓝桥杯第七届 方格填数(dfs)
- js 实现网页一个一个字打印出来的效果
- 判断一个日期是否是周六、周日
- React-native 开发遇到的问题
- 苹果Mac OS X显示隐藏文件的方法
- 通过BitmapFactory.decodeByteArray把byte[]转成Bitmap出现的OOM的解决方法
- dot net npoi
- iOS CGRectInset,CGRectOffset
- 网页下载器