题目链接 一个人初始在(0, 0), 想到(n, m)去, 没到一个格子, 花费的值为C(n, m), 求最小值. C(n, m)的定义为, 如果n==0||m==0, 则为1, 否则C(n, m) = C(n-1, m)+C(n, m-1). 很容易看出来贪心的策略, 先横着或竖着走max(m, n)个格子,代价为max(m, n)+1, 然后在竖着或横着走,代价是一个组合数, C(n+m+1, min(n, m) )-1. 组合数用lucas算就好. #include <iostream>…