2 3 1 1 0 0
10 2
思路:(直接用伟哥的)给你一张纸,n(行)*m(列)你要计算的是
算出从一个对角线到另一个对角线有多少走法(只能向上,向右走)。
分析:一个矩阵,它有行有列,要到达对角线,必定有通过所有的行和列,那么存在两种情况,当行(n)==列(m),即刚好走完列和行,在m+n个里选m或n个组合得C(m+n,m)或C(m+n,n)。
当两者不相等,就要看那个先到,所有最小的必定先到达。
#include<iostream> #include<string.h> #include<algorithm> #include<stdio.h> using namespace std; int main() { long long n,m; while(~scanf("%lld%lld",&n,&m),n||m) { long long a,b; a=n+m; b=n<m?n:m; double sum=1; while(b>0) sum*=(a--/(double)(b--)); printf("%.lf\n",sum); } }
原文地址:http://blog.csdn.net/u012349696/article/details/41871389