#include <stdio.h>
int g(int n,int m)
{
int dp[n+1][m+1];
//动态规划:将子解存储起来,避免重复计算
for(int i=0;i<=n;i++)
{
for(int j=0;j<=m;j++)
{
if(i==1&&j==1)
dp[i][j]=1;
else if(i>=2&&j==1)
dp[i][j]=dp[i-1][j];
else if(i==1&&j>=2)
dp[i][j]=dp[i][j-1];
else{
dp[i][j]=(dp[i-1][j]+dp[i][j-1])%1000000007;
}
}
}
return dp[n][m];
}
int main() {
int m,n;
scanf("%d%d",&n,&m);
int k=g(n,m);
printf("%d",k);
return 0;
}

京公网安备 11010502036488号