沿着對角線,重點是發現狀態轉移方程:dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n=1, m=2;
while ( cin >> n >> m)
{
//int dp[m][n];
n = n + 1;
m = m + 1;
vector<vector<int> > dp(m , vector<int>(n , 0));
//d[i][j]=d[i-1][j]+d[i][j-1];
for (int i = 0; i <n; i++)//行填充,n
{
dp[0][i] = 1;
}
for (int i = 0; i < m; i++)//列填充,m
{
dp[i][0] = 1;
}
for (int i = 1; i <m; i++)
{
for (int j = 1; j < n; j++)
{
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
}
}
cout << dp[m-1][n-1] << endl;
}
return 0;
}