整数划分问题(递归策略)
2006-11-28 21:28
253 查看
下午写了一下整数划分问题,Debug了很久,老是输出得不到预期得结果,
。直到将每个划分步骤保存到数组中才解决这个问题。总算通过了!so Happy! 代码如下,(懒得简化了)
/*问题描述:
// 将一个正整数n表示成一系列正整数之和,
// n = n1 + n2 + ... + nk ( 其中, n1 >= n2 >= ... >= nk , k >= 1 )
// 正整数n的一个这种表示称为正整数n的一个划分。
// 正整数n的不同的划分个数称为正整数n的划分数。
*/
#include<iostream>
#include<iomanip>
using namespace std;
static int Len=0;
static int Count=0;//划分次数
int main(){
void Process(int sum,int total,int b,int*Result,int Len);
const int MAX=1000;
int MP[MAX]={0};//保存划分结果
int Len=0;
int num;
cin>>num;
Process(num,0,num,MP,Len);
cout<<num<<" 的划分个数为 "<<Count<<endl;
return 0;
}
void Print(int *Result,int Len){
cout<<"第 "<<setw(2)<<Count<<"个划分: ";
for(int i=0;i<Len;i++)
cout<<Result[i]<<" ";
cout<<endl;
}
void Process(int sum,int total,int b,int* Result,int Len){
if(total==sum){
Count++;
Print(Result,Len);//输出这个划分
return;
}
else if(total<sum){
for(int i=1;i<=b;i++){
if(total+i<=sum){
Result[Len]=i;
Process(sum,total+i,i,Result,Len+1);
}
}
}
}
。直到将每个划分步骤保存到数组中才解决这个问题。总算通过了!so Happy! 代码如下,(懒得简化了)
/*问题描述:
// 将一个正整数n表示成一系列正整数之和,
// n = n1 + n2 + ... + nk ( 其中, n1 >= n2 >= ... >= nk , k >= 1 )
// 正整数n的一个这种表示称为正整数n的一个划分。
// 正整数n的不同的划分个数称为正整数n的划分数。
*/
#include<iostream>
#include<iomanip>
using namespace std;
static int Len=0;
static int Count=0;//划分次数
int main(){
void Process(int sum,int total,int b,int*Result,int Len);
const int MAX=1000;
int MP[MAX]={0};//保存划分结果
int Len=0;
int num;
cin>>num;
Process(num,0,num,MP,Len);
cout<<num<<" 的划分个数为 "<<Count<<endl;
return 0;
}
void Print(int *Result,int Len){
cout<<"第 "<<setw(2)<<Count<<"个划分: ";
for(int i=0;i<Len;i++)
cout<<Result[i]<<" ";
cout<<endl;
}
void Process(int sum,int total,int b,int* Result,int Len){
if(total==sum){
Count++;
Print(Result,Len);//输出这个划分
return;
}
else if(total<sum){
for(int i=1;i<=b;i++){
if(total+i<=sum){
Result[Len]=i;
Process(sum,total+i,i,Result,Len+1);
}
}
}
}
相关文章推荐
- 递归 放苹果问题和整数划分问题
- 递归 放苹果问题和整数划分问题
- 整数划分问题之递归法
- 递归经典整数划分问题
- 递归之整数的划分问题
- 整数划分问题--递归求解 例题:HDU 1028
- 递归 放苹果问题和整数划分问题
- 递归 放苹果问题和整数划分问题
- 算法(1)整数划分问题之递归解决
- 0002算法笔记——【递归】排列问题,整数划分问题,Hanoi问题
- 递归 放苹果问题和整数划分问题
- 递归 放苹果问题和整数划分问题
- (C语言)整数划分问题 递归和递推
- 跳台阶问题|斐波那契递归的复杂度问题|整数划分问题
- 算法笔记——【递归】整数划分问题
- 整数划分问题---动态规划、递归
- 递归 放苹果问题和整数划分问题
- 递归 放苹果问题和整数划分问题
- OpenJudge 简单的整数划分问题(递归)
- 递归-整数划分问题