zoukankan      html  css  js  c++  java
  • 寒假作业

    寒假作业

    现在小学的数学题目也不是那么好玩的。
    看看这个寒假作业:

    □ + □ = □
    □ - □ = □
    □ × □ = □
    □ ÷ □ = □

    (如果显示不出来,可以参见【图1.jpg】)

    每个方块代表1~13中的某一个数字,但不能重复。
    比如:
    6 + 7 = 13
    9 - 8 = 1
    3 * 4 = 12
    10 / 2 = 5

    以及:
    7 + 6 = 13
    9 - 8 = 1
    3 * 4 = 12
    10 / 2 = 5

    就算两种解法。(加法,乘法交换律后算不同的方案)

    你一共找到了多少种方案?


    请填写表示方案数目的整数。
    注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

    public class Main {
        static int count;
        public static void main(String[] args) {
            int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
            double x = System.currentTimeMillis();
            f(a, 0);
            double y = System.currentTimeMillis();
            System.out.println((y - x) / 1000 + "s");
            System.out.println(count);
        }
        private static void f(int[] a, int k) {
            if(k == a.length - 1) {
                if(a[0] + a[1] == a[2] && a[3] - a[4] == a[5] && a[6] * a[7] == a[8] && Math.abs(((double) a[9] / a[10] - a[11])) < 1E-5) {
                    count ++;
                    return;
                }
                return;
            }
            for(int i = k; i < a.length; i ++) {
                if(i >= 3 && k >= 3) {
                    if(a[0] + a[1] != a[2]) return;  //加上这条,程序减少40秒的运行时间
                }
                {
                    int x = a[k];
                    a[k] = a[i];
                    a[i] = x;
                }
                f(a, k + 1);
                {
                    int x = a[k];
                    a[k] = a[i];
                    a[i] = x;
                }
            }
        }
    }
  • 相关阅读:
    拿webshell方法汇总
    Linux跑脚本用sh和./有什么区别?
    安全测试工具
    浏览器被劫持网上优秀的修复方法
    Linux 逻辑卷扩容
    sed替换文本
    mysql 用户创建,授权
    编程之约定
    java 对象成员变量初始化顺序
    java 静态成员初始化顺序
  • 原文地址:https://www.cnblogs.com/jizhidexiaobai/p/8595085.html
Copyright © 2011-2022 走看看