方格填数
2016-03-29 14:10
253 查看
方格填数
如下的10个格子
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
![](http://img.blog.csdn.net/20160329140735638?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
解题思路:深搜,还是逐个填入数据进行判断,与六角填数一样的道理
(六角填数:/article/9649155.html)
如下的10个格子
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
解题思路:深搜,还是逐个填入数据进行判断,与六角填数一样的道理
(六角填数:/article/9649155.html)
具体代码: #include <stdio.h> #include <stdlib.h> #include <string.h> int a[11],vis[11]; int count; void DFS(int x) { if(x>10)//所有方格填数完毕 { if(abs(a[1]-a[2])>1 && abs(a[1]-a[4])>1 && abs(a[1]-a[5])>1 && abs(a[1]-a[6])>1 && abs(a[2]-a[3])>1 && abs(a[2]-a[5])>1 && abs(a[2]-a[6])>1 && abs(a[2]-a[7])>1 && abs(a[3]-a[6])>1 && abs(a[3]-a[7])>1 && abs(a[4]-a[5])>1 && abs(a[4]-a[8])>1 && abs(a[4]-a[9])>1 && abs(a[5]-a[6])>1 && abs(a[5]-a[8])>1 && abs(a[5]-a[9])>1 && abs(a[5]-a[10])>1 && abs(a[6]-a[7])>1 && abs(a[6]-a[9])>1 && abs(a[6]-a[10])>1 && abs(a[7]-a[10])>1 && abs(a[8]-a[9])>1 && abs(a[9]-a[10])>1) { //输出每种情况 // for(int i=1;i<=10;i++) // printf("%d ",a[i]); // printf("\n"); count++; } } for(int i=0;i<=9;i++) if(vis[i]==0) { vis[i]=1;//将用过的数标记 a[x]=i;//填数 DFS(x+1);//对下一个方格继续填数 vis[i]=0;//清除标记 } } int main() { count=0; DFS(1); printf("%d\n",count); return 0; }
相关文章推荐
- 《精通iOS开发·第六版》数据持久化基础知识之SOLite3持久化
- 表格标签
- 【LeetCode】8. String to Integer (atoi) 字符串转换为整数
- AD 使用说明
- echart 导出图形报表到excel中
- socketserver — 网络服务器的框架
- java: Eclipse jsp tomcat 环境搭建(完整)
- 表格标签
- 表格标签
- 配置apache虚拟主机具体步骤详解(配置虚拟域名指向本地主机)
- Android XUtils3.0 Http网络请求的介绍
- 切换npm的软件源
- html 基本标签
- Velocity !$ 和$!区别
- Android 打开和隐藏软键盘
- iOS开发66-setValue:forKey:和 setObject:forKey:的区别
- mysql命令集
- CentOS 6.3下配置LVM(逻辑卷管理)
- 如何释放电脑被限制的20%网速?
- TPS和QPS区别