ZOJ-1204

来源:互联网 发布:加内特的生涯数据 编辑:程序博客网 时间:2024/06/06 02:34

不难的DFS,直接暴搜就行了,不剪枝也能过

#include<cstdio>#include<vector>#include<algorithm>using namespace std;namespace{vector<int> V, S;int maxx;bool flag = false;void dfs(size_t depth, size_t len, int sum){if (S.size() + V.size() - depth <= len)return;if (len == S.size() && binary_search(V.begin(), V.end(), sum)){printf("%d", S[0]);for (size_t i = 1; i < S.size(); i++)printf("+%d", S[i]);printf("=%d", sum);putchar('\n');flag = true;}for (size_t i = depth; i < V.size(); i++)if (sum + V[i] <= maxx){S.push_back(V[i]);dfs(i + 1, len, sum + V[i]);S.pop_back();}}}int main(){int n, m, t;scanf("%d", &n);while (n--){scanf("%d", &m);V.clear();for (int i = 0; i < m; i++){scanf("%d", &t);V.push_back(t);}sort(V.begin(), V.end());S.clear();maxx = V.back();flag = false;for (size_t i = 2; i < V.size(); i++)dfs(0, i, 0);if (!flag)puts("Can't find any equations.");putchar('\n');}return 0;}


0 0
原创粉丝点击