zoukankan      html  css  js  c++  java
  • 搭积木

    小明最近喜欢搭数字积木。一共有10块积木,每个积木上有一个数字,0~9。
    搭积木规则: 每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。 最后搭成4层的金字塔形,必须用完所有的积木。 下面是两种合格的搭法: 0 1 2 3 4 5 6 7 8 9 0 3 1 7 5 2 9 8 6 4 请你计算这样的搭法一共有多少种?
    public class Main {
        static int count;
        public static void main(String[] args) {
            f("0123456789".toCharArray(), 0);
            System.out.println(count);
        }
        private static boolean g(char[] a) {
            if(a[0] < a[1] && a[0] < a[2] && a[1] < a[3] && a[1] < a[4] && a[2] < a[4] && a[2] < a[5]
                    && a[3] < a[6] && a[3] < a[7] && a[4] < a[7] && a[4] < a[8] && a[5] < a[8] && a[5] < a[9])
                return true;
            return false;
        }
        public static void f(char[] a, int step) {
            if(step == a.length - 1) {
                if(g(a)) {
                    count ++;
                    return;
                }
                else {
                    return;
                }
            }
            
            for(int i = step; i < a.length; i ++) {
                {
                    char t = a[step];
                    a[step] = a[i];
                    a[i] = t;
                }
                f(a, step + 1);
                {
                    char t = a[step];
                    a[step] = a[i];
                    a[i] = t;
                }
            }
        }
    }
  • 相关阅读:
    异常处理
    组合,封装
    自我介绍
    27python更多实例
    28python类代码编写细节
    29python运算符重载
    30python 类的设计
    31python类的高级主题
    32python异常基础
    33python异常编码细节
  • 原文地址:https://www.cnblogs.com/jizhidexiaobai/p/8550928.html
Copyright © 2011-2022 走看看