第七届蓝桥杯省赛C语言B组第6题 方格填数
2017-05-16 09:49
495 查看
方格填数
如下的10个格子
+–+–+–+
| | | |
+–+–+–+–+
| | | | |
+–+–+–+–+
| | | |
+–+–+–+
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
用java写的
最后结果1580
如下的10个格子
+–+–+–+
| | | |
+–+–+–+–+
| | | | |
+–+–+–+–+
| | | |
+–+–+–+
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
用java写的
public class F方格填数 { int k = 0; public static void main(String[] args) { F方格填数 obj = new F方格填数(); obj.init(); } private void init() { fun(new int[10], 0); System.out.println(k); } private void fun(int[] is, int ins) { // is是存放数据的数组, ins为当前下标 if (ins == 10) { // 如果下标等于10 则 is数组已经有十个数 check(is); } else { for (int i = 0; i < 10; i++) { boolean flag = true; for (int j = 0; j < ins; j++) { // 查重复 if (is[j] == i) { flag = false; } } if (flag) { is[ins] = i; fun(is, ins + 1); } } } } private void check(int[] is) { int array[][] = new int[3][4]; // 存放is数据的二位数组 int moves[][] = { { 0, 1 }, { 1, 0 }, { 0, -1 }, { -1, 0 }, { 1, -1 }, { -1, 1 }, { -1, -1 }, { 1, 1 } }; // 移动方向 int i; int m; int j; boolean flag = true; int w = 0; for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { if (i == 0 && j == 0 || (i == 2 && j == 3)) { // 如果是第一个点或者是最后一个点则跳过 continue; } array[i][j] = is[w++]; // 把is数据放到array中 } } for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { if (i == 0 && j == 0 || (i == 2 && j == 3)) {// 如果是第一个点或者是最后一个点则跳过 continue; } for (m = 0; m < 8; m++) { int x = i + moves[m][0]; int y = j + moves[m][1]; if (x < 0 || x > 2 || y < 0 || y > 3 || (x == 0 && y == 0) || (x == 2 && y == 3)) {// 判断是否下标越界或者 // 是否是第一个点或最后一个点 continue; } if (array[i][j] - 1 == array[x][y] || array[i][j] + 1 == array[x][y]) { //判断array[i][j]点是否与array[x][y]连续 break; } } if (m != 8) { flag = false; //如果flag等于false,则此数据不符合条件 } } } if (flag) { // for (i = 0; i < 3; i++) { // for (j = 0; j < 4; j++) { // System.out.print(array[i][j] + " "); // } // System.out.println(); // } // System.out.println(); k++; } } }
最后结果1580
相关文章推荐
- 第七届蓝桥杯第6题:方格填数
- 第七届蓝桥杯第6题:方格填数
- 2016第七届蓝桥杯C++B组第六题:方格填数
- 第七届蓝桥杯软件类省赛真题-C-B-6_方格填数
- 蓝桥杯第七届 方格填数(dfs)
- 2016第七届蓝桥杯 06 方格填数(java)
- 方格填数-第七届蓝桥杯c/c++B组
- 蓝桥杯 第七届省赛试题 方格填数
- 第七届蓝桥杯javaB组真题解析-方格填数(第六题)
- 第七届 蓝桥杯 c/c++ B组 省赛 (6)——方格填数
- 第七届 蓝桥杯 省赛 第六题 方格填数(next_permutation)
- 第七届蓝桥杯b组第六题-方格填数
- 第七届蓝桥杯省赛6:方格填数
- 第七届蓝桥杯_方格填数_简单搜索
- 蓝桥杯第七届个人赛方格填数
- 蓝桥杯第七届方格填数
- 【第七届蓝桥杯】打印方格
- 第七届蓝桥杯省赛c++ A组 方格填数
- 第七届蓝桥杯【省赛试题6】方格填数C语言代码
- 第七届蓝桥杯 方格填数