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