思路:直接把学长以前发的题解截个图吧。比较详细。
那么,我们如何在叠骰子里应用上述算法?在动态规划解法中,dp[i][j]的值等于前一高度所 有方案的选择性累加,一说到选择性累加,是不是十分类似与矩阵快速幂博客中斐波那契数 列的那个只包含 0 和 1 的矩阵?在斐波那契例子中,那个只包含 0 和 1 的矩阵就是这样通过 列向量的 0 或 1 对右边矩阵进行选择累加,从而得出左边矩阵的。
那么,我们也可以通过类似的结构来完成对骰子方案的选择性累加。
接下来,我们需要沿用在 dp 解法中提到的冲突数组,因为冲突数组实际上就是我们的选择 性累加,在这里,我们将它变为冲突矩阵,并且更正一下对它的定义:
com[i][j]表示:有一个点数为 i 的面, 它的反面与点数为 j 的面存在冲突。 dp[i][j]表示 i 个骰子最后一个骰子朝上的面为 j 点时的情况个数。
最后提一句吧为什么代码中没有dp数组,因为一个骰子的情况下,各种情况可能都是1,因此,算出con矩阵最后的结果后再乘dp[1][j],得到dp[n][j],最后我们要把d