#include <iostream> #include <math.h> #include <vector> #include <sstream> #include <stdio.h> using namespace std; vector<int> splitStr(string s) { int j=0; vector<string> str; vector<int> num; for(int i=1;i<s.size();i++) { if(s[i]==',') { str.push_back(s.substr(j,i-j)); j=i+1; } } str.push_back(s.substr(j,s.size()-j)); for(int i=0;i<str.size();i++) { int n; stringstream ss; ss << str[i]; ss>>n; num.push_back(n); } return num; } int table[10][100]={0}; int Knappack(vector<int> v,vector<int> w,int c,int n) { for(int i=1 ;i<n+1;i++) { for(int j=1;j<c+1;j++) { if(j<w[i-1]) { table[i][j]=table[i-1][j]; } else { table[i][j]=max(table[i-1][j],table[i-1][j-w[i-1]]+v[i-1]); } } } return table[n][c]; } int main() { int c; int n; string s; cin>>s; vector<int>value; vector<int>weight; value.push_back(0); weight.push_back(0); value= splitStr(s); cin>>s; weight=splitStr(s); cin>>c; n=value.size(); cout<<Knappack(value,weight,c,n)<<endl; return 0; }
不带输入背包数目的0-1 背包问题
最新推荐文章于 2024-03-18 21:52:03 发布