#include <iostream> #include <vector> using namespace std; int main() { int m, n; cin >> n >> m; //cout << n << m << endl; //计算anm vector<vector<long long>> a(n + 1, vector<long long>(m + 1)); a[1][1] = 1; // 这样就可以正确赋值了 for (int i =2; i<=n; i++) { a[i][1]=1; //a[i][1]=a[i-1][1]; } for (int i =2; i<=m; i++) { a[1][i]=1; //a[1][i]=a[1][i-1]; } for (int i=2; i<=n; i++) { for (int j=2; j<=m; j++) { a[i][j] = (a[i-1][j] + a[i][j-1]) % 1000000007;//每次取模能防止中间结果溢出,这是因为取模运算具有分配律性质,对于加法运算满足: //(a + b) % mod = [(a % mod) + (b % mod)] % mod } } cout<<a[n][m]<<endl; }