算法
(dp)
C++ 代码
#include <bits/stdc++.h>
using namespace std;
int t;
const int N=25;
int f[N][N];
int main()
{
cin>>t;
while(t--)
{
int m,n;
cin>>m>>n;
for(int i=0;i<=m;i++) f[i][0]=0;//边界情况
//f[0][0]=1;
for(int i=0;i<=m;i++)
for(int j=1;j<=n;j++)
{
f[i][j]=f[i][j-1];//1 第一个分身的查克拉为0
if(i==0) f[i][j]=1;//边界情况
if(i>=j)
f[i][j]+=f[i-j][j];//第一个分身的查克拉不为0 则把j个分身的查克拉都减1
//则分配方式为f(i-j,j)
}
cout<<f[m][n]<<endl;
}
return 0;
}