读书人

求x+2y+3z=n的正整数的解数!该如何解

发布时间: 2012-05-01 12:48:58 作者: rapoo

求x+2y+3z=n的正整数的解数!
如题。。
怎么办。。。。。。
递推公式是什么?

[解决办法]
给一个o(1)的算法
int f(int n){
if(n<6)
return 0;
int m=(n-3)/3;
int s=3*m/2+1;
return s+1;
}
我一测试过此法正确,效果和5楼的一模一样
[解决办法]

C/C++ code
#include<stdio.h>int count=0;void f(int sum,int a[],int i,int list[],int n){if(sum==n){int h;for(h=0;h<3;h++){printf("%d ",list[h]);}printf("\n");count++;}else if(sum>n) return;else{int j;for(j=i;j<3;j++){sum+=a[j];list[j]++;f(sum,a,j,list,n);list[j]--;sum-=a[j];}} }void main(){int n,sum=0; int a[3]={1,2,3},list[3]={0};scanf("%d",&n); f(sum,a,0,list,n);printf("\n%d",count);} 

读书人网 >C++

热点推荐