当前位置: 首页 > 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.jsqmd.com/news/1031866/

相关文章:

  • 2026年生物领域808nm激光器厂家有哪些亮点,带你一探究竟!
  • 2026年6月沭阳渔网厂家推荐:从原材料工艺分辨优质渔网厂 - 资讯速览
  • 计算机毕业设计Transformer+CNN网络入侵检测系统 信息安全 网络安全 大数据毕业设计(源码+lw+ppt+讲解)
  • 2026 年 6 月上海宝珀名表回收避坑指南|本地正规机构实测测评 - 开心测评
  • 3分钟掌握Primer3-py:让DNA引物设计变得简单高效
  • 收的顶实地测评:2026 杭州黄金回收优劣门店对比,出手不再踩雷 - 奢侈品回收评测
  • 2026版抖店一件代发商家合规拍单发货 一键下单完整图文教学 - 资讯速览
  • FGO-py终极指南:5步实现全自动游戏管理
  • 2026年真空炉厂家推荐排行榜:广东高温/热处理/立式/连续/管式/微波/石墨/井式真空炉源头品牌精选 - 品牌发掘
  • 计算机毕业设计之基于Web的CBA联赛信息管理系统
  • JN516x嵌入式开发实战:Flash/EEPROM存储管理与中断处理详解
  • 第二次Blog报告
  • 律所多人协作办案怎么管:主办协办分工、权限配置与进度同步
  • CodeWarrior IDE调试实战:从断点、事件点到多核与外部构建集成
  • 北京正规黄金回收应该注意哪几点?六则准则告诉你答案 - 奢侈品回收测评
  • 杭州劳力士回收内行攻略,收的顶报价透明不玩猫腻 - 奢侈品回收评测
  • 2026减震器自动焊机选型指南:减振器叉臂凸焊机优质供应商推荐 - 资讯纵览
  • Notepad--终极指南:5个高效技巧让文本编辑速度提升300%
  • ZigBee OTA升级实战:基于NXP JN516x的固件远程更新与网络优化
  • NXP KE17Z MCU硬件设计实战:从电源时钟到触摸ADC的避坑指南
  • 2026深圳爱马仕包包回收排行,资质齐全连锁机构鉴定技术行业靠前 - 奢侈品回收测评
  • AI绘画底层原理与艺术家防护实战指南
  • Spring 的事件机制你用了三年,但 @TransactionalEventListener 的坑一个都没绕过去
  • 美妆品牌广告电商体系搭建指南:3 个月私域翻 2 倍、毛利增长 50% 的完整拆解
  • 2026国内储能环凸焊机厂家推荐:高品质焊接装备选型指南 - 资讯纵览
  • 2026年澳洲红酒选购:中澳同价保真好酒在哪找 - 资讯纵览
  • 终极简单键盘:Android轻量级输入法完整解决方案
  • Winhance系统优化大师:5大核心功能深度解析与实战指南
  • 5分钟快速上手League Akari:英雄联盟玩家的终极自动化工具指南
  • 电动车带电池怎么托运?这个办法最省心 - 快递物流资讯