点到点的最大连接个数

假定坐标系中,从点(0,0) 到 点 (m,n),只能上行或者右行,则可以到达的路径总数是多少?
每次只能移动一个单位

解法一:

组合数学的多重集合排列问题,设上行一个单位为 x,右行一个单位为y,则到达(m,n)点
的一条路径,对应于{m*x, n*y}的一个全排列。根据全排列公式,可有

    (m+n)!
__________ = C(m+n, m)
      m! n!


解法二:

将问题转化为DP问题,即 设 F(x,y)表示到达(x,y)的路径总数,则有
                  F(x,y) = F(x-1,y) + F(x, y-1);
其中有F(0,j) = 1, F(i, 0) = 1, i = 1...x;  j = 1.....y

代码如下:以 (9,9)点为列子
 1  # include  < iostream >
 2 
 3  using   namespace  std;
 4  int  F( int  x,  int  y) {
 5       if  ( x  ==   0   ||  y  ==   0 )
 6           return   1 ;
 7       else
 8           return  F(x - 1 ,y)  +  F(x,y - 1 );
 9  }
10  int  main() {
11      cout << F( 9 , 9 ) << endl;
12  }
13 
Posted on 2009-06-18 17:37 Liu 阅读(107) 评论(0)   编辑  收藏 引用

你可能感兴趣的:(点到点的最大连接个数)