麻将
1、算法思想维度
问题类型:DP
错误原因:没有思考出状态,对于此类问题不是很了解。
正确思路:设 \(f_{i,j,k}\) 为大小不超过 \(i\) 的数,中有 \(j\) 个 \(\{i-1,i,i+1\}\),\(k\) 个 \(\{i,i+1,i+2\}\),且不超过 \(i\) 的数全部用完的方案数,转移即可。
2、实现细节维度
边界条件:因为合法状态数量不超过 \(n^2\),所以直接转移是 \(O(n^3)\),要使用滚动数组。
数据结构:考虑 \(O(n^3)\) 无法通过,转移时选择扩散性直接差分即可。
解题框架
[code]f[0][0][0] = 1; for (int i = 1; i |