当前位置: 首页 > 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.xdnf.cn/news/524251.html

相关文章:

  • 【神经网络与深度学习】model.eval() 模式
  • Windows环境使用NVM高效管理多个Node.js版本
  • 【数据结构】AVL树的实现
  • CI/CD 深度实践:灰度发布、监控体系与回滚机制详解
  • 嵌入式学习笔记DAY23(树,哈希表)
  • 自学嵌入式 day20-数据结构 链表
  • Ubuntu服务器部署多语言项目(Node.js/Python)方式实践
  • 【android bluetooth 协议分析 01】【HCI 层介绍 7】【ReadLocalName命令介绍】
  • day53—二分法—搜索旋转排序数组(LeetCode-81)
  • Java 后端基础 Maven
  • 2024CCPC吉林省赛长春邀请赛 Java 做题记录
  • 软件设计师“UML”真题考点分析——求三连
  • 在linux里上传本地项目到github中
  • ORPO:让大模型调优更简单高效的新范式
  • R语言+贝叶斯网络:涵盖贝叶斯网络的基础、离散与连续分布、混合网络、动态网络,Gephi可视化,助你成为数据分析高手!
  • Grafana之Dashboard(仪表盘)
  • ThreadLocal作一个缓存工具类
  • 【聚类】层次聚类
  • 三键标准、多键usb鼠标数据格式
  • 从产品展示到工程设计:3DXML 转 STP 的跨流程数据转换技术解析
  • WPF中的ObjectDataProvider:用于数据绑定的数据源之一
  • Regmap子系统之六轴传感器驱动-编写icm20607.c驱动
  • 【云实验】Excel文件转存到RDS数据库
  • 【大数据】MapReduce 编程--索引倒排--根据“内容 ➜ 出现在哪些文件里(某个单词出现在了哪些文件中,以及在每个文件中出现了多少次)
  • .NET 函数:检测 SQL 注入风险
  • 关于能管-虚拟电厂的概述
  • Win10 安装单机版ES(elasticsearch),整合IK分词器和安装Kibana
  • 【android bluetooth 协议分析 01】【HCI 层介绍 8】【ReadLocalVersionInformation命令介绍】
  • 【Android构建系统】Soong构建系统,通过.bp + .go定制编译
  • MySQL 故障排查与生产环境优化