数学解题思路:
一个nXm的方格,首先,从最上角到最下角横向走的“步数”应该是m步,而竖向走的“步数”也是n步,所以从左上角到右下角必须走n+m步。
接着,在总共n+m步中,选择n步作为横向,则另外m步应该为竖向,由排列组合有:n+m中选择n个
或者采用递归
#include<iostream>
using namespace std;
int ans(int n, int m);
int main(){
int n, m, x = 0, y = 0;
int lines = 0, flag = 0;
cin>>n>>m;
cout<<ans(n, m)<<endl;
return 0;
}
int ans(int n, int m){
if(n <= 0 || m <= 0)
return 0;
else if(m == 1)
return n + 1;
else if(n == 1)
return m + 1;
else return ans(n-1, m) + ans(n, m-1);
}