最优分解问题 c++程序

来源:百度知道 编辑:UC知道 时间:2024/07/07 09:45:37
设n是 一个 正整数,要求将其分解 为若干互不相同的自然数的和,且使这些自然数的 乘积最大 计算最优分解方案
例如 输入10 结果为30
要调试成功的
(09.1.15号前)

#include<iostream>
using namespace std;

void main(){
int t = 0;//输入小于0时退出
int i;//当和大于等于t时的数
int sum;//和
int final;
cin>>t;
while(t > 0){
if(t < 4 ){cout<<t ; cin>>t;continue; }
i = 2,sum = 0,final = 1;
while(sum - t < 0){
sum += i;
i++;
}
int b = sum - t;
if(b == 1){
for(int k = 3;k < i+1;k++){
if(k == i-1) continue;
cout<<k<<" ";
final*=k;
}
}
else for(int k = 2;k < i;k ++){
if( b == k) continue;
cout<<k<<" ";
final *= k;
}
cout<<"the max number is " << final <<'\n';
cin>>t;
}
}
在vc2005编译的。