第六届蓝桥杯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 }
View Code
复制代码

 

posted @   没有你哪有我  阅读(113)  评论(0编辑  收藏  举报
编辑推荐:
· 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 加持,客户体验更智能
点击右上角即可分享
微信分享提示