2016年第七届蓝桥杯Java 方格填数
2017-04-07 21:05
387 查看
方格填数
如下的10个格子
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
答案:如果数字不可以重复使用,结果为1580
解题思路:深搜,还是逐个填入数据进行判断,与八皇后问题相似(http://blog.csdn.net/nufangdongde/article/details/69265643)点击打开链接
如下的10个格子
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
答案:如果数字不可以重复使用,结果为1580
解题思路:深搜,还是逐个填入数据进行判断,与八皇后问题相似(http://blog.csdn.net/nufangdongde/article/details/69265643)点击打开链接
public class Main { static int [][]a=new int [3][4]; static int []v={0,0,0,0,0,0,0,0,0,0}; static int s=0;; public static boolean judge() { for(int i=0;i<3;i++) for(int j=0;j<3;j++){ if(Math.abs(a[i][j]-a[i][j+1])==1) return false; } for(int i=0;i<2;i++) for(int j=0;j<4;j++){ if(Math.abs(a[i+1][j]-a[i][j])==1) return false; } for(int i=0;i<2;i++) for(int j=0;j<3;j++){ if(Math.abs(a[i+1][j+1]-a[i][j])==1) return false; } for(int i=2;i>0;i--) for(int j=0;j<3;j++){ if(Math.abs(a[i][j]-a[i-1][j+1])==1) return false; } return true; } public static void paixu(int x,int y) { if(x==2&&y==3&&judge()) { s++; return; } for(int i=0;i<=9;i++){ if(v[i]==0){ a[x][y]=i; v[i]=1; if(y<3) paixu(x,y+1); if(y==3) paixu(x+1,0); v[i]=0; } } } public static void main(String[] args) { a[0][0]=-9;a[2][3]=-9; paixu(0,1); System.out.print(s); } }
相关文章推荐
- 蓝桥杯 第七届JavaB组真题 方格填数
- 蓝桥杯(第七届JavaB组第六题:方格填数)
- 蓝桥杯_2016年第七届C/C++B组—6.方格填数 【DFS】
- 第七届蓝桥杯javaB组真题解析-方格填数(第六题)
- 蓝桥杯-第七届Java语言B组-方格填数
- 2016第七届蓝桥杯 06 方格填数(java)
- 2016年第七届蓝桥杯C/C++A组第三题---方格填数
- 蓝桥杯-第七届省赛javaB组-方格填数
- 2016年蓝桥杯第七届javaB组真题及答案
- 第七届蓝桥杯省赛6:方格填数
- 蓝桥杯-第七届省赛javaA组-生日蜡烛
- 2016年第七届 蓝桥杯 全国总决赛B题(完全平方数)
- 蓝桥杯-第七届省赛javaA组- 分小组
- 蓝桥杯-第七届省赛javaA组-搭积木
- 蓝桥杯 第七届省赛试题 方格填数
- 蓝桥杯-第七届省赛javaA组-取球博弈
- 2016年 蓝桥杯省赛(Java)
- 蓝桥杯 表格计算 2016年第六届蓝桥杯javaB组决赛第五题
- 蓝桥杯-第七届省赛javaA组-寒假作业
- 第七届蓝桥杯C\C++B组省赛题目——方格填数