揹包問題,可以轉化爲0.1,遞增排序好,選定兩個,從最大的開始比較,給較小的加上第三大,以此循環,最後可以輸出
#include <iostream>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
int
main(){
int
n;
vector<
int
> v;
while
(cin >> n){
cin.get();
v.push_back(n);
}
sort(v.begin(),v.end());
int
sum=accumulate(v.begin(),v.end(),
0
);
int
l=v.size();
int
f=v[l-
1
],s=v[l-
2
];
if
(l>=
3
){
for
(
int
i=l-
3
;i>=
0
;--i){
if
(f>s)s+=v[i];
else
f+=v[i];
}}
if
(f>s) cout<<f<<
","
<<sum-f;
else
cout<<s<<
","
<<f;
}