思路:递归/或理解成深搜 //小团的车辆调度 #include<iostream> #include<vector> #include<algorithm> //#include<string> using namespace std; int n, a, b,res=0; void select(int user1, int user2, int i,vector<vector<int>> arr,int flag1,int flag2){ if (flag1 == a && flag2 == b) { res = max((user1 + user2), res); }//分到足够的车辆 if (i >= n) return; select(user1 + arr[i][0], user2, i + 1,arr,flag1+1,flag2); //i车给A select(user1, user2 + arr[i][1], i + 1,arr,flag1,flag2+1); //i车给B select(user1, user2, i + 1,arr,flag1,flag2); //i车谁都不给 } int main(){ cin >> n >> a >> b; vector<vector<int>> record(n, vector<int>(2, 0)); // vector<int> diff; for (int i = 0; i < n; i++){ for (int j = 0; j < 2; j++) cin >> record[i][j]; } select(0, 0, 0, record, 0,0); cout << res << endl; system("pause"); return 0; }
全部评论
(1) 回帖