求x+2y+3z=n的正整数的解数!该如何解决
求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楼的一模一样
------解决方案--------------------
如题。。
怎么办。。。。。。
递推公式是什么?
------解决方案--------------------
给一个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); }