第六届蓝桥杯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; } }
恐惧源于无知,代码改变世界
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义