蓝桥杯之方格填数
2017-05-07 11:28
190 查看
方格填数
![](https://img-blog.csdn.net/20170507112509705?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3dvcmRfYW55b25l/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
在2行5列的格子中填入1到10的数字。
要求:
相邻的格子中的数,右边的大于左边的,下边的大于上边的。
如【图1.png】所示的2种,就是合格的填法。
请你计算一共有多少种可能的方案。
此题用回溯法解,最简单不过了
打赏一点钱,帮我买杯咖啡,继续创作,谢谢大家!
在2行5列的格子中填入1到10的数字。
要求:
相邻的格子中的数,右边的大于左边的,下边的大于上边的。
如【图1.png】所示的2种,就是合格的填法。
请你计算一共有多少种可能的方案。
此题用回溯法解,最简单不过了
package 第六届; public class Exe50 { static int sum = 0; public static void main(String[] args) { int num[] = new int[10]; for (int i = 0; i < num.length; i++) { num[i] = i+1; } dfs(num,0); System.out.println("总共"+sum+"种"); } private static void dfs(int[] num, int begin) { if (begin>=num.length) { check(num); return ; } for (int i = begin; i < num.length; i++) { int temp = num[begin]; num[begin] = num[i]; num[i] = temp; dfs(num,begin+1); temp = num[begin]; num[begin] = num[i]; num[i] = temp; } } private static void check(int[] num) { int count = 0; int now[][] = new int[2][5]; for (int i = 0; i < now.length; i++) { for (int j = 0; j < now[i].length; j++) { now[i][j] = num[count++]; } } for (int i = 0; i < now.length; i++) { for (int j = 0; j < now[i].length-1; j++) { if (now[i][j]> now[i][j+1]) { return ; } } } for (int j = 0; j < now[0].length; j++) { if (now[0][j]> now[1][j]) { return ; } } System.out.println("第"+(++sum)+"种:"); for (int i = 0; i < now.length; i++) { for (int j = 0; j < now[i].length; j++) { System.out.print(now[i][j]+"\t"); } System.out.println(); } System.out.println("\n\n"); } }
打赏一点钱,帮我买杯咖啡,继续创作,谢谢大家!
相关文章推荐
- 2017第八届蓝桥杯省赛Java A组--方格分割
- 第七届蓝桥杯大赛个人赛省赛(软件类)A组第三题 方格填数
- 蓝桥杯(第七届JavaB组第六题:方格填数)
- 蓝桥杯 2017java组方格取数
- 蓝桥杯 方格填数 DFS 全排列 next_permutation用法
- 蓝桥杯 第七届JavaB组真题 方格填数
- 蓝桥杯_2016年第七届C/C++B组—6.方格填数 【DFS】
- 方格填数-第七届蓝桥杯c/c++B组
- 2017河南省B组蓝桥杯真题(1) 方格分割
- 2017蓝桥杯模拟题B方格分割
- 蓝桥杯-方格填数
- 方格填数(2016年蓝桥杯)
- 蓝桥杯真题 方格填数
- 第八届蓝桥杯C++B组 方格分割
- 2016第七届蓝桥杯C++B组第六题:方格填数
- 蓝桥杯之方格填数
- 第七届蓝桥杯省赛6:方格填数
- 第八届蓝桥杯【省赛试题4】方格分割
- 蓝桥杯第八届 方格分割(dfs)
- 第七届蓝桥杯 方格填数