题目描述:
三羊献瑞
观察下面的加法算式:
祥 瑞 生 辉
+ 三 羊 献 瑞
-------------------
三 羊 生 瑞 气
(如果有对齐问题,可以参看【图1.jpg】)
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
直接上代码:
package wiki.zimo.exam06;
public class Demo03 {
public static void main(String[] args) {
for (int i = 9999; i >= 1000; i--) {
for (int j = 1000; j <= 9999; j++) {
if (!isRepeat(i, j)) {
int result = i + j;
if (judge(result, i, j)) {
System.out.println(" "+i);
System.out.println("+"+j);
System.out.println("-------------------");
System.out.println(result);
return;
}
}
}
}
}
static boolean judge(int result,int n1,int n2) {
String resultStr = String.valueOf(result);
if (resultStr.length() < 5) {
return false;
}
if (isRepeat(resultStr)) {
return false;
}
String numStr1 = String.valueOf(n1);
String numStr2 = String.valueOf(n2);
if (numStr1.charAt(0) == resultStr.charAt(4)) {
return false;
}
if (numStr1.charAt(0) == numStr2.charAt(2)) {
return false;
}
if (numStr1.charAt(2) == numStr2.charAt(2)) {
return false;
}
if (numStr1.charAt(3) == numStr2.charAt(2)) {
return false;
}
char rui = numStr1.charAt(1);
char sheng = numStr1.charAt(2);
char san = numStr2.charAt(0);
char yang = numStr2.charAt(1);
if (rui == numStr2.charAt(3) && rui == resultStr.charAt(3)
&& sheng == resultStr.charAt(2)
&& san == resultStr.charAt(0)
&& yang == resultStr.charAt(1)) {
return true;
}
return false;
}
static boolean isRepeat(int n1,int n2) {
String str1 = String.valueOf(n1);
String str2 = String.valueOf(n2);
if (isRepeat(str1) || isRepeat(str2)) {
return true;
}
return false;
}
static boolean isRepeat(String str) {
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
int index = str.indexOf(ch, i + 1);
if (index > 0) {
return true;
}
}
return false;
}
}