如下的10个格子
+--+--+--+
| | | |
+--+--+--+--+
| | | | |
+--+--+--+--+
| | | |
+--+--+--+
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
public class Main { static int count; public static void main(String[] args) { int[] a = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; dfs(a, 0); System.out.println(count); } private static void dfs(int[] a, int k) { if(k == a.length - 1) { if(Math.abs(a[0] - a[1]) != 1 && Math.abs(a[0] - a[3]) != 1 && Math.abs(a[0] - a[4]) != 1 && Math.abs(a[0] - a[5]) != 1 && Math.abs(a[1] - a[2]) != 1 && Math.abs(a[1] - a[4]) != 1 && Math.abs(a[1] - a[5]) != 1 && Math.abs(a[1] - a[6]) != 1 && Math.abs(a[2] - a[5]) != 1 && Math.abs(a[2] - a[6]) != 1 && Math.abs(a[3] - a[4]) != 1 && Math.abs(a[3] - a[7]) != 1 && Math.abs(a[3] - a[8]) != 1 && Math.abs(a[4] - a[5]) != 1 && Math.abs(a[4] - a[7]) != 1 && Math.abs(a[4] - a[8]) != 1 && Math.abs(a[4] - a[9]) != 1 && Math.abs(a[5] - a[6]) != 1 && Math.abs(a[5] - a[8]) != 1 && Math.abs(a[5] - a[9]) != 1 && Math.abs(a[6] - a[9]) != 1 && Math.abs(a[7] - a[8]) != 1 && Math.abs(a[8] - a[9]) != 1) { System.out.println(" " + a[0] + " " + a[1] + " " + a[2]); System.out.println(a[3] + " " + a[4] + " " + a[5] + " " + a[6]); System.out.println(a[7] + " " + a[8] + " " + a[9]); count ++; return; } } for(int i = k; i < a.length; i ++) { { int x = a[k]; a[k] = a[i]; a[i] = x; } dfs(a, k + 1); { int x = a[k]; a[k] = a[i]; a[i] = x; } } } }
原文地址:https://www.cnblogs.com/jizhidexiaobai/p/8576031.html
时间: 2024-10-07 20:28:40