网格走法数目

题目描述

有一个X*Y的网格,小团要在此网格上从左上角到右下角,只能走格点且只能向右或向下走。请设计一个算法,计算小团有多少种走法。给定两个正整数int x,int y,请返回小团的走法数目。

输入描述:

输入包括一行,逗号隔开的两个正整数x和y,取值范围[1,10]。

输出描述:

输出包括一行,为走法的数目。
示例1

输入

3 2

输出

10
 1 import java.util.Scanner;
 2 /**
 3  *  网格走法  数目    
 4  *   m*n 的格子   总共要走 m+n 步
 5  *        排列组合 数目计算
 6  *        从 m+n 里取出 m个或n个  求有多少取法
 7  *        !(m+n)/!n
 8  * @author Dell
 9  *
10  */
11 public class Main {
12 static  long getNFactorial(int n) {
13     if (n==0) {
14         return 1l;
15     }else {
16         return n*getNFactorial(n-1);
17     }
18 }
19 static long getCombination(int m ,int n) {
20     long a = 1;
21     for (int i = 0; i <n ; i++) {
22         a*=m;
23         m--;
24     }
25     return a/getNFactorial(n);
26 }
27 public static void main(String[] args) {
28     Scanner sc = new Scanner(System.in);
29     int m =sc.nextInt();
30     int n = sc.nextInt();
31     int a = Math.min(m, n);
32     long res = getCombination(m+n, n);
33     System.out.println(res);
34 }
35 }

 

posted @ 2018-05-02 17:33  千彧  阅读(817)  评论(0编辑  收藏  举报