当前位置: 代码迷 >> 综合 >> NYOJ - 整数划分(二)
  详细解决方案

NYOJ - 整数划分(二)

热度:29   发布时间:2024-01-20 18:02:36.0

整数划分(二)

时间限制: 1000 ms  |           内存限制: 65535 KB
难度: 3
描述

把一个正整数m分成n个正整数的和,有多少种分法?

例:把5分成3个正正数的和,有两种分法:

1 1 3

1 2 2

输入
第一行是一个整数T表示共有T组测试数据(T<=50)
每组测试数据都是两个正整数m,n,其中(1<=n<=m<=100),分别表示要拆分的正数和拆分的正整数的个数。
输出
输出拆分的方法的数目。
样例输入
2
5 2
5 3
样例输出
2
2
#include <stdio.h>int fun(int n,int m)
{if(n < m)return 0;if(n == m)return 1;if(m == 1)return 1;if(n > m)return fun(n-1,m-1) + fun(n-m,m);
}
int main(void)
{int ncase,n,m;scanf("%d",&ncase);while(ncase--){scanf("%d%d",&n,&m);printf("%d\n",fun(n,m));}return 0;
}

 

#include <stdio.h>int a[101][101];int main(void)
{int ncase,m,n;int i,j;a[1][1] = 1;for(i = 2; i < 101; i++){for(j = 1; j <= i; j++){a[i][j] = a[i-1][j-1] + a[i-j][j];}}scanf("%d",&ncase);while(ncase--){scanf("%d%d",&m,&n);printf("%d\n",a[m][n]);}return 0;
}
  相关解决方案