完成了两道dp题

This commit is contained in:
carry 2025-03-26 11:58:33 +08:00
parent 9a570843c4
commit fd0dc19352
2 changed files with 68 additions and 0 deletions

40
01背包.cpp Normal file
View File

@ -0,0 +1,40 @@
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Solution {
public:
int knapsack(int V, vector<vector<int>>& vw) {
sort(vw.begin(),vw.end(),[](vector<int> a,vector<int> b){
return a[0] < b[0];
});
vector<vector<int>> dp(vw.size() + 1,vector<int>(V + 1,0));
for(int i = 1 ;i <= vw.size();i++){
for(int j = 1;j < vw[i-1][0];j++){
dp[i][j] = dp[i-1][j];
//cout << dp[i][j] << " ";
}
//cout << "change";
for(int j = vw[i-1][0];j <= V;j++){
dp[i][j] = max(dp[i-1][j],vw[i-1][1] + dp[i-1][j - vw[i-1][0]]);
cout << dp[i][j] << ":" << j << " ";
}
//cout << endl;
}
return dp[vw.size()][V];
}
};
int main(){
Solution mysolution;
vector<vector<int>> array = {{1,3},{10,4}};
cout << mysolution.knapsack(10,array);
return 0;
}

28
PrintMinNumber.cpp Normal file
View File

@ -0,0 +1,28 @@
#include <iostream>
#include <vector>
#include <list>
#include <string>
#include <algorithm>
using namespace std;
class Solution {
public:
string PrintMinNumber(vector<int>& numbers) {
sort(numbers.begin(),numbers.end(),[](int a,int b){
return stoi(to_string(a) + to_string(b)) < stoi(to_string(b) + to_string(a));
});
string result = "";
for(auto &i:numbers){
result += to_string(i);
}
return result;
}
};
int main(){
vector<int> nums = {3,33,3334,33332};
Solution solution;
cout << solution.PrintMinNumber(nums) << endl;
return 0;
}