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

DeepSeek LeetCode 3276. 选择矩阵中单元格的最大得分 Java实现

这道题是 LeetCode 3276,可以用状态压缩动态规划 (状压DP) 来解决。

核心思路

题目有两个核心限制:

1. 每行最多选一个:因为行数 n <= 10,可以用一个二进制整数(位掩码)表示哪些行已被占用。
2. 选中的值必须互不相同:可以从大到小考虑每个可能的数值(1 到 100),决定是否选择它。

状态定义与转移

· 状态定义:dp[i][mask] 表示处理完数值 i 到 100 后,已占用行状态为 mask 时能获得的最大得分。
· 初始状态:dp[101][mask] = 0(没有数值可选了)。
· 状态转移:对于数值 i,有两种选择:
1. 跳过:dp[i][mask] = dp[i+1][mask]
2. 选择:如果某行 r 未被占用且包含数值 i,则可以选它:dp[i][mask] = max(dp[i][mask], dp[i+1][mask | (1 << r)] + i)
· 最终答案:dp[1][0](所有行都未被占用)。

Java 代码实现

```java
class Solution {
public int maxScore(List<List<Integer>> grid) {
int n = grid.size();
// 1. 预处理:记录每一行包含了哪些数字
// 数字范围是 1 到 100
boolean[][] has = new boolean[n][101];
for (int i = 0; i < n; i++) {
for (int v : grid.get(i)) {
has[i][v] = true;
}
}

// 2. 动态规划
// dp[i][mask]: 处理完数值 i..100,已选行状态为 mask 的最大得分
int[][] dp = new int[102][1 << n];

// 从大到小遍历所有可能的数值
for (int i = 100; i >= 1; i--) {
for (int mask = 0; mask < (1 << n); mask++) {
// 情况1: 不选择数字 i
dp[i][mask] = dp[i + 1][mask];

// 情况2: 选择数字 i,枚举它可以被安放在哪一行
for (int r = 0; r < n; r++) {
// 行 r 未被占用 且 行 r 包含数字 i
if ((mask & (1 << r)) == 0 && has[r][i]) {
int newMask = mask | (1 << r);
dp[i][mask] = Math.max(dp[i][mask], dp[i + 1][newMask] + i);
}
}
}
}

// 从数字1开始,初始没有任何行被占用
return dp[1][0];
}
}
```

复杂度分析

· 时间复杂度: O(100 * 2^n * n),其中 n 是矩阵行数(n <= 10),因此效率很高。
· 空间复杂度: O(100 * 2^n)。

其他解法思路

· 回溯 + 剪枝:对每行去重排序,递归尝试选或不选,通过剪枝优化。
· 贪心 + TreeMap:从大到小处理数值,用 TreeMap 记录每个值出现在哪些行,用回溯处理冲突。

上述状态压缩DP是这道题比较标准的解法,逻辑清晰且易于实现。

http://www.rkmt.cn/news/1543761.html

相关文章:

  • 免费AI视频放大神器Video2X:如何三步将低清视频无损升级到4K超高清
  • 济宁装修公司哪家靠谱、哪家专业?2026 十强口碑装企实测推荐 - 装修新知
  • 2026年生物领域808nm激光器厂家有哪些亮点,带你一探究竟!
  • 计算机毕业设计Transformer+CNN网络入侵检测系统 信息安全 网络安全 大数据毕业设计(源码+lw+ppt+讲解)
  • 3分钟掌握Primer3-py:让DNA引物设计变得简单高效
  • JN516x嵌入式开发实战:Flash/EEPROM存储管理与中断处理详解
  • NXP KE17Z MCU硬件设计实战:从电源时钟到触摸ADC的避坑指南
  • 北京正规黄金回收应该注意哪几点?六则准则告诉你答案 - 奢侈品回收测评
  • Winhance系统优化大师:5大核心功能深度解析与实战指南
  • 深度解析中频点焊机:核心原理与高端制造应用 - 资讯纵览
  • 2026年环凸焊机深度选型分析:如何为热成型钢焊接匹配最佳方案 - 资讯纵览
  • 2026 年黄金回收价格行情,上海正规变现平台推荐 - 开心测评
  • 私人门店收藏!北京黄金回收靠谱店铺名录及交易全流程 - 奢侈品回收测评
  • 监测·报警·快传·强制停——国信华源公路主动预警系统上线
  • 3.4 ⾼性能的索引策略
  • 5分钟打造专属二次元音乐世界:MoeKoe音乐播放器完全指南
  • NGA论坛优化脚本:告别繁琐操作,提升浏览效率的终极方案
  • 黄金回收怕被坑?上海黄金回收标杆收的顶当面称重检测,报价透明不踩坑 - 奢侈品回收评测
  • 互联网大厂技术岗的选择:工学大数据 vs 统计学
  • 破解高端制造中频点焊机痛点:A智能焊接方法论如何实现升级? - 资讯纵览
  • GPT-5.5时代岗位能力压力测试实操指南
  • 买二手手机去哪个平台?三大平台质保、退货、物流服务详细解读 - 资讯纵览
  • CDLL电流调节二极管:原理、参数解读与LED驱动等实战应用
  • 《HumanoidKick足球机器人核心技术解析》 摘要:本文档详细披露了冠军级人形足球机器人HumanoidKick的三大核心技术体系:1)仿生肌电驱动系统(2001-2050项),通过快慢肌纤维模
  • 如何让老款Mac焕发新生:OpenCore Legacy Patcher的魔法之旅
  • 2026年加药搅拌桶厂家推荐榜单:平底/锥底搅拌桶、农药外加剂搅拌桶、水处理化工药剂搅拌桶源头企业精选 - 品牌发掘
  • 深度揭秘FreeRDP:解锁企业级远程桌面协议的跨平台实战突破
  • 计算机毕业设计之同城搬家服务平台设计与实现
  • 北京北大青鸟直营校区有哪些?2026官方校区办学详解 - 新闻快传
  • IOPaint:重新定义AI图片修复的智能画笔,开启零门槛专业修图新体验