随笔分类 -  算法 / 动态规划

摘要:[acwing]291. 蒙德里安的梦想 /* 横放的方案数就等于总方案数,因为横着放完后,再竖着放是唯一的 dp[i][j] 表示第 i 列状态为 j 的方案数 状态为 j 是指:各行用 0 或 1 表示摆放状态 :若某行为 0,表示竖放或由前一列伸出 :若某行为 1,表示横放并向后一列伸出 dp 阅读全文

posted @ 2023-04-04 22:00 lyc2002 阅读(15) 评论(0) 推荐(0) 编辑

摘要:[acwing]1222.密码脱落 /* 有多少个前后不配对的字符,就说明脱落了多少个,即总长度减去回文子序列的长度 dp[i][j] 表示 str[i, j] 的最长回文子序列的长度 如果 str[i] == str[j],dp[i][j] = dp[i + 1][j - 1] + 2 否则,dp 阅读全文

posted @ 2023-03-02 17:48 lyc2002 阅读(12) 评论(0) 推荐(0) 编辑

摘要:[acwing]1047.糖果 /* dp[i][j] 表示只考虑前 i 件物品,模 k 余 j 的最大价值 如果不取第 i 件物品,dp[i][j] = dp[i - 1][j] 如果取第 i 件物品,dp[i][j] = dp[i - 1][((j - v[i]) % k + k) % k] + 阅读全文

posted @ 2023-03-01 23:22 lyc2002 阅读(10) 评论(0) 推荐(0) 编辑

摘要:[acwing]1023.小明买书 /* dp[i][j] 表示只考虑前 i 个物品,其价值恰好为 j 的方案个数 dp[i][j] 可从选多少个第 i 个物品推导出来,假设最多能选 s 个 如果选 0 个第 i 个物品,dp[i][j] = dp[i - 1][j - vi * 0] 如果选 1 阅读全文

posted @ 2023-03-01 20:53 lyc2002 阅读(16) 评论(0) 推荐(0) 编辑