可以使用动态规划来解决这个问题。
设计状态:
- dp[i][j] 表示前 i 次遇到店,j 次遇到花的方案数
- base case:dp[0][0] = 1
状态转移:
- dp[i][j] = dp[i-1][j-1] + dp[i][j-1]
- dp[i][j] = dp[i-1][j] + dp[i-1][j-1] + dp[i][j-1] (i>0)
最终答案:dp[N][M]
Java 代码如下:
import java.util.Scanner;
public class Main {
static final int MOD = 1000000007;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nex