有效涂色问题-二维dp
题目介绍
Solution
#include<iostream>
#include<vector>
using namespace std;const int mod = 1000000007;
// 前i个格子涂满j种颜色的方法数
int f(int n, int m) {vector<vector<int>>dp(n + 1, vector<int>(m + 1, 0));//base case//注意这个边界情况,填第一列就可以了,第一行不用填,因为一个格子无法用满大于1的颜色for (int i = 1; i <= n; ++i)dp[i][1] = m;for (int i = 2; i <= n; ++i) {for (int j = 2; j <= m; ++j) {int a = (dp[i - 1][j - 1] * (m - j + 1)) % mod;int b = (dp[i - 1][j] * j) % mod;dp[i][j] = (a + b) % mod;}}return dp[n][m];
}int main() {return 0;
}