zoukankan      html  css  js  c++  java
  • 第六届蓝桥杯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;
        }
    
    }
    恐惧源于无知,代码改变世界
  • 相关阅读:
    .NET Worker Service 如何优雅退出
    .NET 中的 Worker Service 入门介绍
    一图看懂 ASP.NET Core 中的服务生命周期
    创建支持依赖注入、Serilog 日志和 AppSettings 的 .NET 5 控制台应用
    Asp.Net Core 5 REST API 使用 RefreshToken 刷新 JWT
    Asp.Net Core 5 REST API 使用 JWT 身份验证
    Asp.Net Core 5 REST API
    JWT 介绍
    在 .NET Core 5 中集成 Create React app
    在 .NET Core 中构建 REST API
  • 原文地址:https://www.cnblogs.com/ad-zhou/p/8644572.html
Copyright © 2011-2022 走看看