题目链接
解法:这个题看似是搜索或者动态规划等问题,但仔细一想如果只能向两个方向单向走的话,那么任何一种走法的总步数都是一样的,并且向某个方向走的步数也是一样的,那么这个问题就变成了一个组合问题,即总共走n+m步,从这n+m步中选出n步向某个方向走,共有几种排列方法。
#include<bits/stdc++.h>
using namespace std;
int main(){
int m,n,s;
while(cin>>n>>m){
long k=1,kk=1;
s=n+m;
if(m<n) swap(n,m);//默认n 是最小的
for(int i=1;i<=n;i++,s--) k*=s;
for(int i=2;i<=n;i++) kk*=i;
cout<<k/kk<<endl;
}
}