当前位置: 首页 > news >正文

力扣每日一题5-18

class Solution {
public int colorTheGrid(int m, int n) {
// 每一列可能的状态总数 每个单元有3可能
int totalState = 1;
for (int i = 0; i < m; ++i) totalState *= 3;
// pre[k] 代表前一轮dp 状态为k 的方案总数
int [] pre = new int [totalState];
// 初始化合法填色 的 方案数为1
for (int state = 0; state < totalState; ++state) {
if (checkCol(state, m)) pre[state] = 1;
}
for (int i = 1; i < n; ++i) {
int [] cur = new int [totalState];
// 枚举可能的转移
for (int preState = 0; preState < totalState; ++preState) {
if (pre[preState] == 0) continue;
for (int curState = 0; curState < totalState; ++curState) {
// 行和列的填色都满足题设
if (checkCol(curState, m) && checkRow(preState, curState, m)) {
cur[curState] = addWithMode(cur[curState], pre[preState]);
}
}
}
pre = cur;
}
int planNum = 0;
for (int state = 0; state < totalState; ++state) {
planNum = addWithMode(planNum, pre[state]);
}
return planNum;
}
private boolean checkCol(int state, int m) {
int prevCeilColor = -1;
while (m-- > 0) {
if (state % 3 == prevCeilColor) {
return false;
}
prevCeilColor = state % 3;
state /= 3;
}
return true;
}
private boolean checkRow(int pre, int cur, int m) {
while (m-- > 0) {
if (pre % 3 == cur % 3) return false;
pre /= 3;
cur /= 3;
}
return true;
}
private int addWithMode(int a, int b) {
int mode = (int) 1E9 + 7;
return (a + b) % mode;
}
}

http://www.dtcms.com/a/199495.html

相关文章:

  • Cursor 模型深度分析:区别、优缺点及适用场景
  • 电子电路:什么是偏置电路?
  • Baklib知识中台架构设计与智能服务实践
  • wpf DataGrid 行选择事件
  • Redis 学习笔记 5:分布式锁
  • vulfocus漏洞学习——redis 未授权访问 (CNVD-2015-07557)
  • RabbitMQ-高级
  • 信息化的编程未来发展
  • 数据结构实验10.1:内部排序的基本运算
  • 算法-数对的使用
  • 【数据结构篇】排序1(插入排序与选择排序)
  • Vue百日学习计划Day33-35天详细计划-Gemini版
  • java中如何优雅处理多租户系统的查询?
  • 嵌入式学习的第二十三天-数据结构-树+哈希表+内核链表
  • Linux项目部署全攻略:从环境搭建到前后端部署实战
  • Python实现的在线词典学习工具
  • Axure设计数字乡村可视化大屏:构建乡村数据全景图
  • prisma连接非关系型数据库mongodb并简单使用
  • 【TTS回顾】深度剖析 TTS 合成效果的客观评估与主观评价
  • 【D1,2】 贪心算法刷题
  • 《AI革命重塑未来五年:医疗诊断精准度翻倍、自动驾驶事故锐减90%,全球科技版图加速变革》
  • Go 语言 vs C+Lua(Skynet)游戏服务器方案对比分析
  • 睿抗足球机器人
  • 国产 iPaaS 与国外 iPaaS 产品相比如何?以谷云科技为例
  • Scala与Spark:原理、实践与技术全景详解
  • 服务端安全测试:OWASP ZAP使用
  • 计算机网络(2)——应用层(上)
  • 智象科技:自动化模块驱动IT运维效能升级
  • C语言:在操作系统中,链表有什么应用?
  • elasticsearch之记录es7.17升级8.17 springboot2.7.0 程序改造坑