不同路径
#include<bits/stdc++.h>
using namespace std;
class Solution{
public:
//利用深搜
int differWay(int m,int n,int i,int j){
if(i>m||j>n) return 0;//越界
if(i==m&&j==n) return 1;//找到一条可以走的
return differWay(m,n,i+1,j)+differWay(m,n,i,j+1);//两种走法
}
//利用dp,重写方法
int differWay(int m,int n){
vector<vector<int> >dp(m,vector<int>(n,0));
for(int i=0;i<m;i++) dp[i][0]=1;//初始化
for(int j=0;j<n;j++) dp[0][j]=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];//由上一级的步数得到
}
}
return dp[m-1][n-1];
}
};
int main(){
int m,n;
cin>>m>>n;
Solution solution;
cout<<solution.differWay(m,n,1,1);
cout<<endl;
cout<<solution.differWay(m,n);
return 0;
}