只能向下和向右走,其实就是最短路径,m+n 条路里面选m条是向下的,那么其余的就向右走,所以排列组合计算,可以使用深搜或者广搜,到终点则路径加一也可以
#include<stdio.h> int n,m; int fun(int n,int m){ int num=m+n; int sum1=1,sum2=1; for(int i=num;i>=num-m+1;i--){ sum1*=i; } for(int i=m;i>=1;i--){ sum2*=i; } return sum1/sum2; } int main(){ while(scanf("%d %d",&n,&m)!=EOF){ printf("%d\n",fun(n,m)); } }