【蓝桥杯】三羊献瑞-算法题JAVA解

这是一道蓝桥杯比赛中的算法题,要求找出“三羊献瑞”代表的唯一4位数字。通过暴力遍历方法,设置每个汉字对应的数字范围,筛选出符合条件的解。

题目:

观察下面的加法算式:
在这里插入图片描述

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。

请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。

分析:

直接暴力遍历,将 “ 三 羊 献 瑞 祥 生 辉 ” 设成未知数,
其范围皆为【0,10)或(0, 10)。然后进行遍历,选择符合条件的结果输出。

题解:

public class Main {
   
   
	public static void main(String[] args) {
   
   
		int Q, W, E, R, T, Y, U, I, Zoo;
		for(int q = 1; q < 10; q++) {
   
   
			for(int w = 
献瑞题可通过不同的 C 语言方法实现,以下是几种常见的实现方式: #### 深度优先搜索(DFS)实现 ```c #include <stdio.h> #include <string.h> /* 枚举8个数字 */ int d[8 + 1], vis[10], ans = 0; /* =x[1] =x[2] 献=x[3] 瑞=x[4] 祥=x[5] 辉=x[6] 生=x[7] 气=x[8] */ void dfs(int k) { if (k > 8) { int a = d[5] * 1000 + d[4] * 100 + d[7] * 10 + d[6]; int b = d[1] * 1000 + d[2] * 100 + d[3] * 10 + d[4]; int sum = d[1] * 10000 + d[2] * 1000 + d[7] * 100 + d[4] * 10 + d[8]; if (a + b == sum) ans = b; } else if (ans == 0) { for (int i = 0; i <= 9; i++) if (vis[i] == 0) { d[k] = i; vis[i] = 1; dfs (k + 1); vis[i] = 0; } } } int main() { memset(vis, 0, sizeof vis); d[1] = 1, vis[1] = 1; dfs(2); printf("%d\n", ans); return 0; } ``` 此代码利用深度优先搜索枚举 8 个数字的所有可能组合,然后检查是否满足加法算式条件,若满足则记录“献瑞”代表的数字并输出[^4]。 #### 另一种递归实现 ```c #include <stdio.h> void xuanze(int [],int,int); int byy(int [],int); int q_qs(int); int q_shu( int [], int ); int main(void) { int sz[8]; xuanze(sz,8,0); return 0; } int q_qs(int k) { if( k == 0 || k == 4 ) { return 1; } return 0; } int q_shu( int z[], int n) { int he = 0 , i ; for( i = 0 ; i < n ; i ++ ) { he *= 10 ; he += z[i]; } return he ; } int byy(int z[],int k) { int i ; for( i = 0 ; i < k ; i ++ ) { if( z[i] == z[k] ) { return 0; } } return 1; } void xuanze(int z[],int n,int k) { if( k == n ) { int shu1[4] = { z[0] , z[1] , z[2] , z[3] }; int shu2[4] = { z[4] , z[5] , z[6] , z[1] }; int shu3[5] = { z[4] , z[5] , z[2] , z[1] , z[7] }; if( (q_shu(shu1,4) + q_shu(shu2,4)) == q_shu(shu3,5) ) { printf("%d\n", q_shu(shu2,4) ); } //return; } for( z[k] = q_qs(k) ; z[k] < 10 ; z[k] ++ ) { if( byy(z,k) ) { xuanze(z,n,k+1); } } } ``` 该代码通过递归方式选择数字,确保每个数字的唯一性,并检查加法算式是否成立,若成立则输出“献瑞”代表的数字[^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值