1 条题解

  • 0
    @ 2025-1-2 11:22:05

    #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
    上传者