题目1:求整数划分个数
题目2:求整数划分
例:整数3,划分如下:
3
2+1
1+1+1
有3个划分结果。
求划分方法和个数:
#include<iostream>
using namespace std;
int cnt=0;
int a[100];
int ans=0;
void P(int n,int m){
if(n==0){
for(int i=0;i<cnt;i++){
cout<<a[i];
if(i<cnt-1){
cout<<"+";
}
}
cout<<endl;
ans++;
return;
}
// 从1到max的范围内寻找可能的划分
for(int i=min(n,m);i>=1;i--){
a[cnt++]=i;//选择i
P(n-i,i);
cnt--;//回溯
}
}
int main(){
int n;
cout<<"请输入要划分的整数:";
cin>>n;
cout<<"划分的方法如下:"<<endl;
P(n,n);
cout<<"划分的个数:"<<ans<<endl;
return 0;
}
思路:从1到max选择一个数,以该数为最大值进行划分,找到一个划分结果。