WEB开发网      婵犻潧鍊婚弲顐︽偟椤栨稓闄勯柦妯侯槸閻庤霉濠婂骸浜剧紒杈ㄥ笚閹峰懘鎮╅崹顐ゆ殸婵炴垶鎸撮崑鎾趁归悩鐑橆棄闁搞劌瀛╃粋宥夘敃閿濆柊锕傛煙鐎涙ê鐏f繝濠冨灴閹啴宕熼鍡╀紘婵炲濮惧Λ鍕叏閳哄懎绀夋繛鎴濈-楠炪垽鎮归崶褍妲婚柛銊ュ缁傚秹鏁撻敓锟� ---闂佹寧娲╅幏锟�
开发学院软件开发C++ 把n个数分成k份,使其尽量平均 阅读

把n个数分成k份,使其尽量平均

 2012-09-03 15:03:17 来源:WEB开发网 闂侀潧妫撮幏锟�闂佸憡鍨电换鎰版儍椤掑倵鍋撳☉娆嶄沪缂傚稄鎷�婵犫拃鍛粶闁靛洤娲ㄩ埀顒佺⊕閵囩偟绱為敓锟�闂侀潧妫撮幏锟�  闂佺ǹ绻楀▍鏇㈠极閻愬搫绾ч柕濠忕細閼割亜顪冪€n剙浠ф繛鍫熷灥椤曘儵顢欓悡搴ば�
核心提示: #include<stdio.h>#include<vector>#include<algorithm>#include<iostream>using namespace std;typedef vector<int> IntVector;ty

  #include<stdio.h>
#include<vector>
#include<algorithm>
#include<iostream>
using namespace std;
typedef vector<int> IntVector;
typedef vector<IntVector> IntMat;

void DeuceNumber(const IntVector &SourceVecNum,
const int nShare,
IntMat &OutVecVecNum)
{
IntVector copySourceNum = SourceVecNum;
sort(copySourceNum.begin(), copySourceNum.end(), greater<int>());

IntVector sum(nShare);
OutVecVecNum.resize(nShare);
int len=copySourceNum.size();
for (int i = 0; i < len ; i++)
{
const int nMinSumPos = min_element(sum.begin(), sum.end()) - sum.begin();
OutVecVecNum[nMinSumPos].push_back(copySourceNum[i]);
sum[nMinSumPos] += copySourceNum[i];
}
}
int main(){
int a[]={8,26,10,19,10,24,11,18,11,21,12,12,17,13,16,14,15,12,16};
int n=3;
IntVector v;
IntMat v2;
v.insert(v.begin(),a,a+18);
DeuceNumber(v,n,v2);
IntVector::iterator it;
IntMat::iterator iit;
iit=v2.begin();
int sum,total=0;
while(iit!=v2.end()){
it=iit->begin();
sum=0;
while(it!=iit->end()){
printf("%d ",*it);
sum+=*it;
it++;
}
total+=sum;
printf(" sum=%d\n",sum);
iit++;
}
printf("%d",total);
return 0;
}

Tags:个数 分成 尽量

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接