Run ID:108961

提交时间:2025-01-23 17:29:56

#include <iostream> #include <vector> using namespace std; vector<int> solution; bool is_valid(const vector<int>& digits) { // 检查每个数字是否在0到9之间且不重复 vector<bool> used(10, false); for (int digit : digits) { if (digit < 0 || digit > 9 || used[digit]) { return false; } used[digit] = true; } return true; } bool solve(int index, vector<int>& digits) { if (index == 12) { // 检查是否满足算式条件 int A = digits[0], B = digits[1], C = digits[2], D = digits[3]; int E = digits[4], F = digits[5], G = digits[6], H = digits[7]; int I = digits[8], J = digits[9], K = digits[10], L = digits[11]; if (1000A + 100B + 10C + D + 1000E + 100F + 10G + H == 1000I + 100J + 10K + L) { solution = digits; return true; } return false; } for (int digit = 0; digit < 10; ++digit) { digits[index] = digit; if (is_valid(digits) && solve(index + 1, digits)) { return true; } } return false; } int main() { vector<int> digits(12, 0); if (solve(0, digits)) { for (int i = 0; i < 12; i += 4) { for (int j = i; j < i + 4; ++j) { cout << solution[j] << " "; } cout << endl; } } else { cout << "No solution found." << endl; } return 0; }