Day72力扣打卡

打卡记录

参加考试的最大学生数(压缩状态DP)

链接

python 复制代码
class Solution:
    def maxStudents(self, seats: List[List[str]]) -> int:
        m, n = len(seats), len(seats[0])
        # a[i] 是第 i 排可用椅子的下标集合
        a = [sum((c == '.') << j for j, c in enumerate(s)) for s in seats]
        f = [[0] * (1 << n) for _ in range(m)]
        for j in range(1, 1 << n):
            lb = j & -j
            f[0][j] = f[0][j & ~(lb * 3)] + 1
        for i in range(1, m):
            j = a[i]
            while j:  # 枚举 a[i] 的子集 j
                f[i][j] = f[i - 1][a[i - 1]]  # 第 i 排空着
                s = j
                while s:  # 枚举 j 的子集 s
                    if (s & (s >> 1)) == 0:  # s 没有连续的 1
                        t = a[i - 1] & ~(s << 1 | s >> 1)  # 去掉不能坐人的位置
                        f[i][j] = max(f[i][j], f[i - 1][t] + f[0][s])
                    s = (s - 1) & j
                j = (j - 1) & a[i]
            f[i][0] = f[i - 1][a[i - 1]]
        return f[-1][a[-1]]
相关推荐
多则惑少则明2 分钟前
【算法题4】找出字符串中的最长回文子串(Java版)
java·开发语言·数据结构·算法
迷途之人不知返6 分钟前
二叉树题目
数据结构·算法
【建模先锋】10 分钟前
基于Python的智能故障诊断系统 | SmartDiag AI (基础版)V1.0 正式发布!
开发语言·人工智能·python·故障诊断·智能分析平台·大数据分析平台·智能故障诊断系统
AIsdhuang13 分钟前
2025 年企业 AI 培训精选指南:聚焦企业培训场景
人工智能·python
今天没有盐29 分钟前
Python 数据分析实战:多场景数据处理与可视化全解析
python·pycharm·编程语言
程序员三藏1 小时前
如何用Postman做接口自动化测试?
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
优宁维生物1 小时前
DNA 提取的基础方法
人工智能·算法
n***27191 小时前
JAVA (Springboot) i18n国际化语言配置
java·spring boot·python
心无旁骛~1 小时前
python多进程multiprocessing——spawn启动方式解析
开发语言·python
@Aurora.1 小时前
优选算法【专题二:滑动窗口】
算法