http://acm.hdu.edu.cn/showproblem.php?pid=5698

方法一:暴力打表找规律看出是一个斜的杨辉三角,答案是C(n+m-4,m-2)

方法二:排列组合。枚举走了x步到达(n,m),对于行,对于列分开看,就各自相当于有n-1,m-1个相同的小球分成x组,每组至少有1个的方案数,用隔板法。答案就是Σ C(n-x,x)*C(m-x,x)   ,x∈[1,min{n-1,m-1}]

方法二:https://blog.csdn.net/qwb492859377/article/details/51478117

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007

ll n,m,c[200000+10],fac[200000+10];

ll pow_mod(ll a,ll n)
{
	if(n==0)return 1;
	ll x=pow_mod(a,n/2);
	x=x*x%mod;
	if(n&1)x=x*a%mod;
	return x;
}

int main()
{
	fac[0]=1;
	for(int i=1;i<=200000;i++)fac[i]=(fac[i-1]*i)%mod;
	while(cin>>n>>m)
	{
		int N=n+m-4,M=m-2;
		cout<<fac[N]*pow_mod(fac[M],mod-2)%mod*pow_mod(fac[N-M],mod-2)%mod<<endl;
	}
	return 0;
}