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

Posted coder-zhou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第六届蓝桥杯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;
    }

}

 

以上是关于第六届蓝桥杯java b组第三题的主要内容,如果未能解决你的问题,请参考以下文章

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

蓝桥杯java b组第十题

第六届蓝桥杯大赛个人赛省赛java b组试题 三羊献瑞怎么解

算法笔记_215:第六届蓝桥杯软件类校赛部分真题(Java语言B组)

蓝桥杯第一次模拟赛JAVA题解

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