zoukankan      html  css  js  c++  java
  • 方格填数


    方格填数

    如下的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;
                }
            }
        }
    }
  • 相关阅读:
    DataGridView使用SqlCommandBuilder批量更新数据
    【转】Python中中文处理的问题
    Logging模块的简单使用 Python
    Python 3 collections.defaultdict() 与 dict的使用和区别
    [转]关于Python的super用法研究
    Python 关于 name main的使用
    ClickOnce 我的大爱
    DataGridView控件显示行号的正确代码
    SQL存储过程和事务处理
    指针赋值的问题【转】
  • 原文地址:https://www.cnblogs.com/jizhidexiaobai/p/8576031.html
Copyright © 2011-2022 走看看