蓝桥杯题目练习 基础篇 [蓝桥杯2015初赛]三羊献瑞

三羊献瑞

题目描述

观察下面的加法算式:

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

输出

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

思路 暴力求解

由题目可知是8个不同的数,组成两个四位数a,b和一个五位数c。并且a+b=c;
用暴力穷举法可以定义8个变量,用8个for循环,再建个数组保证每个变量不一样。 难点在于每个变量不一样。
代码;

#include <iostream>
using namespace std;

int main(){
	int x1,x2,x3,x4;
	int y1,y2,y3,y4;
	int a,b,c;
	int flag[10];
	for(int i=0;i<10;i++)
		flag[i]=0;
	for( x1=0;x1<=9;x1++){
		flag[x1]=1; 
		for(x2=0;x2<=9;x2++){
			if(flag[x2]==1) continue;
			else flag[x2]=1;
			for( x3=0;x3<=9;x3++){
				if(flag[x3]==1) continue;
				else flag[x3]=1;
				for(x4=1;x4<=9;x4++){
					if(flag[x4]==1) continue;
					else flag[x4]=1;
					for(y1=0;y1<=9;y1++){
						if(flag[y1]==1) continue;
						else flag[y1]=1;
						for(y2=0;y2<=9;y2++){
							if(flag[y2]==1) continue;
							else flag[y2]=1;
							for(y3=1;y3<=9;y3++){
								if(flag[y3]==1) continue;
								else flag[y3]=1;
								for(y4=0;y4<=9;y4++){
									if(flag[y4]==1) continue;
									else flag[y4]=1;
									a=x1+10*x2+100*x3+1000*x4;
									b=x3+10*y1+100*y2+1000*y3;
									c=y4+10*x3+100*x2+1000*y2+10000*y3;
									if((a+b)==c) {
										cout<<b;
										break;
										for(int i=0;i<10;i++) flag[i]=0;
									}
									flag[y4]=0;
								}
								flag[y3]=0;
							}
							flag[y2]=0;
						}
						flag[y1]=0;
					}
					flag[x4]=0;
				}
				flag[x3]=0;
			}
			flag[x2]=0;
		}
		flag[x1]=0;
	}
						
	return 0;
}

答案其实有两个 1085 1086 选一个直接输出就好。

发布了72 篇原创文章 · 获赞 3 · 访问量 6175

猜你喜欢

转载自blog.csdn.net/Ace_bb/article/details/104187970