另类且又经典的暴力dfs,特点是将vector传入参数。
心得:通过vector逐步缩小枚举范围(这种枚举的同时选择范围会缩小的题可以使用),相比使用标记数组什么的比较方便,好想。
#include#include #include #include using namespace std; typedef long long ll; ll res = 1e18; char op[5]; void dfs(vector v,int u) { if (v.size() == 1) { res = min(res,v[0]); return; } for (int i = 0;i < v.size();i ++ ) { for (int j = 0;j < v.size();j ++ ){ vector x; if (i == j) continue; for (int k = 0;k < v.size();k ++ ) if (k != i && k != j) x.push_back(v[k]); if (op[u] == '*') x.push_back(v[i] * v[j]); else x.push_back(v[i] + v[j]); dfs(x,u + 1); } } } int main() { vector v; for (int i = 0;i < 4;i ++ ) { ll x; cin >> x; v.push_back(x); } for (int i = 0;i < 3;i ++ ) cin >> op[i]; dfs(v,0); cout << res << 'n'; return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)