import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int m = scanner.nextInt(); int totalSteps = n + m; int min = Math.min(n, m); long result = 1; for (int i = 1; i <= min; i++) { result = result * (totalSteps - min + i) / i; } System.out.println(result); } }
https://www.nowcoder.com/discuss/727521113110073344
思路:
- 读取输入:使用 Scanner 读取两个整数 n 和 m,分别代表行数和列数。
- 计算总步数:totalSteps 是 n + m,表示从起点到终点的总移动次数。
- 选择较小值:min 取 n 和 m 中的较小值,减少计算次数。
- 组合数计算:通过循环累乘和累除的方式计算组合数,避免中间结果溢出,确保每一步的结果都是整数。
- 输出结果:打印计算得到的路径数。