#include <iostream> #include <unordered_map> #include <vector> using namespace std; bool dfs(int sum, int n, bool flag, unordered_map<string, int> mp, vector<int> mark, vector<string> card, string res){ if(n == 4){ if(sum == 24){ cout << res << endl; return true; } return false; } if(flag){ for(int i=0; i<4; ++i){ if(!mark[i]){ mark[i] = 1; if(dfs(sum+mp[card[i]], n+1, true, mp, mark, card, res+"+"+card[i])|| dfs(sum-mp[card[i]], n+1, true, mp, mark, card, res+"-"+card[i])|| dfs(sum*mp[card[i]], n+1, true, mp, mark, card, res+"*"+card[i])|| dfs(sum/mp[card[i]], n+1, true, mp, mark, card, res+"/"+card[i])) return true; mark[i] = 0; } } }else{ for(int i=0; i<4; ++i){ if(!mark[i]){ mark[i] = 1; res = card[i]; if(dfs(mp[card[i]], 1, true, mp, mark, card, res)) return true; mark[i] = 0; } } } return false; } int main() { unordered_map<string, int> mp; for (int i = 2; i <= 10; i++) //初始化 mp[to_string(i)] = i; mp["A"] = 1; mp["J"] = 11; mp["Q"] = 12; mp["K"] = 13; vector<string> card(4); for (int i = 0; i < 4; i++) { //如果存在大王小王,则输出ERROR cin >> card[i]; if (card[i] == "joker" || card[i] == "JOKER") { cout << "ERROR" << endl; return 0; } } vector<int> mark(4, 0); if(!dfs(0, 0, false, mp, mark, card, "")) cout << "NONE" << endl; return 0; } // 64 位输出请用 printf("%lld")