uva 10344 23 out of 5 凑运算结果 全排列+dfs
五个数三个运算符号,排列之后凑成结果为23,不考虑优先级。
很水,数据量也不大,先生成五个数的全排列,用dfs找出结果能否为23即可。
代码:
#include <cstdio> #include <algorithm> using namespace std; #define RES 23 const int maxn = 5; int num[maxn]; bool flag; bool input(void) { for (int i = 0; i < maxn; i++) scanf("%d", &num[i]); if (num[0] || num[1] || num[2] || num[3] || num[4]) return true; return false; } void dfs(int res, int d) { if (flag) return; if (d == maxn) { if (res == RES) flag = true; return; } dfs(res + num[d], d + 1); dfs(res - num[d], d + 1); dfs(res * num[d], d + 1); } int main() { while (input()) { sort (num, num + maxn); flag = false; do { dfs(num[0], 1); } while (!flag && next_permutation(num, num + maxn)); if (flag) printf("Possible\n"); else printf("Impossible\n"); } return 0; }
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
【推荐】AI 的力量,开发者的翅膀:欢迎使用 AI 原生开发工具 TRAE
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战