有一个n*m的格子小人要从左上角走到右下角只能往右或下走,有几种走法
m<=100 n<=100
#include <bits/stdc++.h>
using namespace std;
int a[101];
int main(){
int n,m;
cin >> n >> m;
if(n==1||m==1){
cout << 1 ;
return 0;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(i==1||j==1){
a[j]=1;
}else{
a[j]=a[j-1]+a[j];
}
}
}
cout << a[m];
return 0;
}
题解:如果要走到右下角,那么只要求他的左边的格子,和上面的格子右几种走法。第1行和第1列都只有一种走法,全部初始化为1,所以每个格子的值就是上面的格子加上左边的格子。