import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = 0;//记录向右需要的次数
int m = 0;//记录向下需要的次数
int a = 1;//记录全排列
int cn = 1;//记录向右的排序个数
int cm = 1;//记录向下的排序个数
String[] split = new String[2];
while (in.hasNext()) {
a = 1;
cn = 1;
cm = 1;
split = in.nextLine().split("\\s+");
n = Integer.valueOf(split[0]);
m = Integer.parseInt(split[1]);
for (int i = 1; i <= (n + m); i++) {
a*=i;
}
for (int i = 1; i <= n ; i++) {
cn*=i;
}
for (int i = 1; i <= m; i++) {
cm*=i;
}
System.out.println(a/cn/cm);
}
}
}先上代码。本题目要求走方格的方案数,有点绕,实际上是一个排列组合的问题,只要➡n次+⬇m次就可以,那么问题转换为求这n次和m次的排列方式有几种,显然是有(n+m)!种。但是!!!➡不管有多少种方式,都是只向右走一步,每一步是平权的,无所谓先后,其实只有一种,所以需要除以n!才能消除这种影响。向下同理。故这个问题到最后异常简单,就是先求3个阶乘,再来一遍除法运算。

京公网安备 11010502036488号