POJ_1032,贪心问题,把正整数n表示成若干个不同的正整数的和,求积的最大值,参考博客
#include <iostream>
using namespace std;
int main(){
int n,group; cin>>n;
int nums[500];
//共有group+1组(编号0~group-1),初始时第0组人数为2,之后每组依次多一人
for(group=0;n>=group+2;group++){
n-=(group+2);
nums[group]=group+2;
}
//将多余的人均匀分配至各组,不能均分的人倒序分配给大组
if(n>=group){
for(int i=0;i<group;i++)
nums[i]++;
n-=group;
}
for(int i=group-1;n>0;i--){
n--;
nums[i]++;
}
for(int i=0;i<group;i++)
cout<<nums[i]<<" ";
return 0;
}