正整数n可以分解为多种和的形式。如5的多种分解可简单总结如下:
最大数为1(1个): 1+1+1+1+1
最大数为2(2个): 1+1+1+2,1+2+2
最大数为3(2个): 1+1+3,2+3;
最大数为4(1个): 1+4
最大数为5(1个): 5;
请编写函数,计算并返回正整数n的分解中,最大数不超过m的分解方案数。
递归函数写起来较省事,但程序运行中会出现重复计算的问题,本程序的测试数据可能有较大的数,故建议您写动态规划算法(即记录前边的计算结果以免重复计算)。
函数接口定义:
int fun (int n, int m);
裁判测试程序样例:
#include <stdio.h>
int fun (int n, int m);
int main(){
int N, M;scanf("%d%d",&N,&M);
printf("%d,%d,%d",fun(N,N),fun(N,M),fun(N,M)-fun(N,M-1));
return 0;
}