整数划分问题
2016-08-01 08:04
330 查看
将正整数n表示成一系列正整数之和。
将最大加数不大于n1不大于m的划分记作q(n,m)。#include<stdio.h>
int q(int n,int m){
if((n<1)||(m<1))
return 0;
if((n==1)||(m==1))
return 1;
if(n<m)
return q(n,n);
if(n==m)
return q(n,m-1)+1;
return q(n,m-1)+q(n-m,m);
}
int main(){
int a=6;//正整数
int b=6;
printf("%d ",q(a,b));//输出加数不大于b的划分种数
return 0;
}
将最大加数不大于n1不大于m的划分记作q(n,m)。#include<stdio.h>
int q(int n,int m){
if((n<1)||(m<1))
return 0;
if((n==1)||(m==1))
return 1;
if(n<m)
return q(n,n);
if(n==m)
return q(n,m-1)+1;
return q(n,m-1)+q(n-m,m);
}
int main(){
int a=6;//正整数
int b=6;
printf("%d ",q(a,b));//输出加数不大于b的划分种数
return 0;
}