题目:
三羊献瑞
观察下面的加法算式:
祥 瑞 生 辉 + 三 羊 献 瑞 ------------------- 三 羊 生 瑞 气
(如果有对齐问题,可以参看【图1.jpg】)
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
———————————————————————————————————
这里采用全排列+枚举
#include <iostream> using namespace std; #include <algorithm> //算法头文件 int a[] = {0,1,2,3,4,5,6,7,8,9}; int main() { do{ if(a[0]==0||a[4]==0) //两个加数第一位不为0 continue; int s1 = a[0]*1000+a[1]*100+a[2]*10+a[3]; //分别为数组中的0 1 2 3 int s2 = a[4]*1000+a[5]*100+a[6]*10+a[1]; //4 5 6 1 这里最后一个瑞注意是重复的 for(int i=7;i<=9;i++){ //此时下标为7 8 9 的还没有放进去那么依次试 int sum = a[4]*10000+a[5]*1000+a[2]*100+a[1]*10+a[i]; //4 5 2 1 ? if(s1+s2==sum) cout<<s2<<endl; //答案为1085 } }while(next_permutation(a,a+10)); //采用全排列 return 0; }
注意:
1.其中两个加数之间就有重复的字,特别注意
2.这里气是单独一个要分别试验过去