题目描述
有一个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 }