第六届蓝桥杯JavaB组——第3题三羊献瑞(递归全排列)
注意点:数字的开头不能为0即可
Java代码

1 package com.lzp.lanqiaosix.p3; 2 3 /** 4 * @Author LZP 5 * @Date 2021/3/7 13:29 6 * @Version 1.0 7 * 8 三羊献瑞 9 10 观察下面的加法算式: 11 12 祥 瑞 生 辉 13 + 三 羊 献 瑞 14 ------------------- 15 三 羊 生 瑞 气 16 17 (如果有对齐问题,可以参看【图1.jpg】) 18 19 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。 20 21 请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。 22 23 24 int xiang; -----0 25 int rui; -----1 26 int sheng; -----2 27 int hui; -----3 28 int san; -----4 29 int yang; -----5 30 int xian; -----6 31 int qi; -----7 32 */ 33 public class Main { 34 private static int[] arr = new int[8]; 35 private static int[] dp = new int[10]; 36 public static void main(String[] args) { 37 f(0); 38 } 39 40 public static void f(int index) { 41 if (index == 8) { 42 43 if (arr[0] == 0 || arr[4] == 0) { 44 return; 45 } 46 47 // 祥 瑞 生 辉 48 int a1 = arr[0] * 1000 + arr[1] * 100 + arr[2] * 10 + arr[3]; 49 50 // 三 羊 献 瑞 51 int a2 = arr[4] * 1000 + arr[5] * 100 + arr[6] * 10 + arr[1]; 52 53 // 三 羊 生 瑞 气 54 int result = arr[4] * 10000 + arr[5] * 1000 + arr[2] * 100 + arr[1] * 10 + arr[7]; 55 56 if (result == a1 + a2) { 57 System.out.println("" + arr[4] + arr[5] + arr[6] + arr[1]); 58 for (int i = 0; i < arr.length; i++) { 59 System.out.printf("%d\t", arr[i]); 60 } 61 System.out.println(); 62 } 63 64 return; 65 } 66 67 for (int i = 0; i < 10; i++) { 68 if (dp[i] == 0) { 69 dp[i] = 1; 70 arr[index] = i; 71 f(index + 1); 72 dp[i] = 0; 73 } 74 } 75 } 76 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能