將石頭分成質量相近的兩組,並輸出

揹包問題,可以轉化爲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;

發佈了38 篇原創文章 · 獲贊 21 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章