數學解題思路:
一個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);
}