#include using namespace std; #define str to_string //利用define缩短代码 vector path; const int N = 30; int a[N]; void dfs(int step, int res) { if (step == 4) { if (res == 24) { for (int i = 0; i < path.size(); i++, puts("")) printf("%d", path[i]); exit(0); } return; } int x = a[step]; if (x > res) swap(x, res); path.push_back(str(res) + "+" + str(x) + "=" + str(res + x)); dfs(step + 1, res + x); path.pop_back(); path.push_back(str(res) + "-" + str(x) + "=" + str(res - x)); dfs(step + 1, res - x); path.pop_back(); path.push_back(str(res) + "*" + str(x) + "=" + str(res * x)); dfs(step + 1, res * x); path.pop_back(); if (x && res % x == 0) { path.push_back(str(res) + "/" + str(x) + "=" + str(res / x)); dfs(step + 1, res / x); path.pop_back(); } } int main() { for (int i = 0; i < 4; i++) scanf("%d", &a[i]); do { dfs(1, a[0]); } while (next_permutation(a, a + 4)); puts("No answer!"); return 0; } /* 考虑添加括号的情况,假设**?**为运算符,一共只有5种: 1.((a?b)?c)?d 2.(a?(b?c))?d 3.a?((b?c)?d) 4.(a?b)?(c?d) 5.a?(b?(c?d)) */