1 条题解
-
0
#include #include #include using namespace std; int max_sum = 0; int min_sum = 200000; void dfs(vector<vector>& work_worth, vector& visited, int n, int current_sum, int index) { if (index == n) { max_sum = max(max_sum, current_sum); min_sum = min(min_sum, current_sum); return; } for (int j = 0; j < n; j++) { if (!visited[j]) { visited[j] = true; dfs(work_worth, visited, n, current_sum + work_worth[index][j], index + 1); visited[j] = false; } } } int main() { int n; cin >> n; vector<vector> work_worth(n, vector(n)); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> work_worth[i][j]; } } vector visited(n, false); dfs(work_worth, visited, n, 0, 0); cout <<min_sum<<endl<< max_sum << endl; return 0; }实在是不知道错哪了,虽然没做剪枝,但是你起码先得让我过了几个案列,我再来优化吧。案例可以过但是运行评测就不行了。
- 1
信息
- ID
- 226
- 时间
- 3000ms
- 内存
- 1024MiB
- 难度
- 10
- 标签
- 递交数
- 40
- 已通过
- 1
- 上传者