第六届蓝桥杯java b组第三题

第三题

三羊献瑞

观察下面的加法算式:

三羊献瑞

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。

请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。

答案这个题目完全可以使用暴力破解模型,就是从0~9中选取8个数,进行全排列,然后看情况是否符合

但是我在这里遇到了一个问题 就是暴力破解模型失误了,怎么说,需要选取8个数 我排了10个数,然后数据得到的结果错误了

后来一想我没有错 毕竟答案唯一:1085 美滋滋

import java.util.Stack;
//思想得出全排列 然后选取前八个数据为数据排列 进行测试
//如果数据复习排列规则 就输出
//但是这个地方 我错误点在于将其10个全排列 
//然后选取其中的前八个作为数据
public class Test3A {
    private static int count = 0;
    private static int sum = 0;
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<Integer>();
        for (int i = 0; i <= 9; i++) {
            stack.push(i);
            fun(stack);
            stack.pop();
        }
        System.out.println(count);
        System.out.println(sum);
    }

    private static void fun(Stack<Integer> stack) {
        for (int j = 0; j <= 9; j++) {
            if (stack.size() == 10) {
                int a = stack.get(0);
                int b = stack.get(1);
                int c = stack.get(2);
                int d = stack.get(3);
                int e = stack.get(4);
                int f = stack.get(5);
                int g = stack.get(6);
                int h = stack.get(7);
                if (check(a, b, c, d, e, f, g, h)) {
                    ++count;
                    System.out.printf("%d %d %d %d %d %d %d %d", a, b, c, d, e, f, g, h);
                    System.out.println();
                    
                }
                return;
            }

            if (!stack.contains(j)) {
                stack.push(j);
                fun(stack);
                stack.pop();
            }
        }
    }

    private static boolean check(int... args) {
        int ABCD = args[0] * 1000 + args[1] * 100 + args[2] * 10 + args[3];
        int EFGB = args[4] * 1000 + args[5] * 100 + args[6] * 10 + args[1];
        int EFCBH = args[4] * 10000 + args[5] * 1000 + args[2] * 100 + args[1] * 10 + args[7];
        if (ABCD + EFGB == EFCBH && args[4] != 0) {
            return true;
        }
        return false;
    }

}

 

posted @ 2018-03-25 14:39  coder-zhou  阅读(208)  评论(0编辑  收藏  举报