这道题的易错点是,每一步的限制条件都不能写漏
#include <iostream>
using namespace std;
double ans1 = 0, ans2 = 0, ans3 = 0;
int main(void) {
for (int i = 1; i <= 9; i++) { //i=祥
for (int j = 0; j <= 9; j++) { //j=瑞
if (j == i) continue;
else {
for (int k = 0; k <= 9; k++) { //k=生
if (k == i || k == j) continue;
else {
for (int l = 0; l <= 9; l++) { //l=辉
if (l == i || l == j || l == k) continue;
else {
ans1 = i * 1000 + j * 100 + k * 10 + l; //得到了第一个数
//将第一个数,和第二个数所有可能的情况进行排列
for (int m = 1; m <= 9; m++) { // m =三
if (m != i && m != j && m != k && m != l) {
for (int n = 0; n <= 9; n++) {
if (n == m||n==i||n==j||n==k||n==l) continue;
else {
for (int o = 0; o <= 9; o++) {
if (o == n || o == m||o==i||o==j||o==k||o==l) continue;
else {
if (j == m || j == n || j == o) continue;
else {
ans2 = m * 1000 + n * 100 + o * 10 + j;
for (int r = 0; r <= 9; r++) {
if (r != i && r != j && r != k && r != l && r != m && r != n && r != o) {
ans3 = m * 10000 + n * 1000 + k * 100 + j * 10 + r;
if (ans1 + ans2 == ans3) {
cout << ans2 ;
return 0;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
//这道题的易错点是,每一步的限制条件都不能写漏
return 0;
}