1931. 用三种不同颜色涂色网格

1931. 用三种不同颜色涂色网格

💡 原文英文,约700词,阅读约需3分钟。
📝

内容提要

给定一个 m x n 的网格,要求用红、绿、蓝三种颜色涂色,且相邻单元格不能同色。使用动态规划和位掩码生成有效的列配置,计算涂色方式,结果需对 10^9 + 7 取模。

🎯

关键要点

  • 给定一个 m x n 的网格,要求用红、绿、蓝三种颜色涂色。
  • 相邻单元格不能同色,结果需对 10^9 + 7 取模。
  • 示例1:输入 m = 1, n = 1,输出为 3。
  • 示例2:输入 m = 1, n = 2,输出为 6。
  • 示例3:输入 m = 5, n = 5,输出为 580986。
  • 使用动态规划和位掩码生成有效的列配置。
  • 生成有效列配置:使用回溯法生成每列的有效颜色配置。
  • 预计算兼容转移:确定哪些列配置可以相邻。
  • 动态规划:计算每列的涂色方式,使用转移矩阵更新 DP 数组。

延伸问答

如何用三种颜色涂色一个 m x n 的网格?

可以用红、绿、蓝三种颜色涂色,且相邻单元格不能同色。

涂色方式的计算结果需要做什么处理?

结果需对 10^9 + 7 取模。

给定 m = 1 和 n = 2,涂色的输出结果是什么?

输出结果为 6。

如何生成有效的列配置?

使用回溯法生成每列的有效颜色配置,确保相邻单元格不同色。

动态规划在涂色计算中起什么作用?

动态规划用于计算每列的涂色方式,并使用转移矩阵更新 DP 数组。

如何预计算兼容转移?

确定哪些列配置可以相邻,存储在转移矩阵中。

➡️

继续阅读