From dad45d599b9368e7ddeeea9b62bc53bea122fc24 Mon Sep 17 00:00:00 2001 From: programmercarl <826123027@qq.com> Date: Wed, 29 Mar 2023 11:34:59 +0800 Subject: [PATCH] Update --- README.md | 2 +- ...ƒŒåŒ…的排列问题二维迭代ç†è§£).md | 145 ------------------ ...ä¸€è®²é€’å½’ç®—æ³•çš„æ—¶é—´å¤æ‚度ï¼.md | 16 +- problems/哈希表ç†è®ºåŸºç¡€.md | 5 +- 4 files changed, 11 insertions(+), 157 deletions(-) delete mode 100644 problems/0377-ç»„åˆæ€»å’ŒIV(完全背包的排列问题二维迭代ç†è§£).md diff --git a/README.md b/README.md index a9b2f7ef..f3e5812c 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ å¦‚æžœä½ æ˜¯ç®—æ³•è€æ‰‹ï¼Œè¿™ç¯‡æ”»ç•¥ä¹Ÿæ˜¯å¤ä¹ çš„æœ€ä½³èµ„料,如果把æ¯ä¸ªç³»åˆ—对应的总结篇,快速过一é,整个算法知识体系以åŠå„ç§è§£æ³•å°±é‡çŽ°è„‘æµ·äº†ã€‚ -ç›®å‰ã€Œä»£ç éšæƒ³å½•ã€åˆ·é¢˜æ”»ç•¥æ›´æ–°äº†ï¼š**200多篇文章,精讲了200é“ç»å…¸ç®—法题目,共60w字的详细图解,部分难点题目还æ­é…了20分钟左å³çš„视频讲解**。 +ç›®å‰ã€Œä»£ç éšæƒ³å½•ã€åˆ·é¢˜æ”»ç•¥æ›´æ–°äº†ï¼š**200多篇文章,精讲了200é“ç»å…¸ç®—法题目,共60w字的详细图解,大部分题目都æ­é…了20分钟左å³çš„视频讲解**,视频质é‡å¾ˆå¥½ï¼Œå£ç¢‘很好,大家å¯ä»¥åŽ»çœ‹çœ‹ï¼Œè§†é¢‘åˆ—è¡¨ï¼š[代ç éšæƒ³å½•è§†é¢‘è®²è§£](https://www.bilibili.com/video/BV1fA4y1o715)。 **这里æ¯ä¸€ç¯‡é¢˜è§£ï¼Œéƒ½æ˜¯ç²¾å“,值得仔细ç¢ç£¨**。 diff --git a/problems/0377-ç»„åˆæ€»å’ŒIV(完全背包的排列问题二维迭代ç†è§£).md b/problems/0377-ç»„åˆæ€»å’ŒIV(完全背包的排列问题二维迭代ç†è§£).md deleted file mode 100644 index 276329c5..00000000 --- a/problems/0377-ç»„åˆæ€»å’ŒIV(完全背包的排列问题二维迭代ç†è§£).md +++ /dev/null @@ -1,145 +0,0 @@ -# 完全背包的排列问题模拟 - -#### Problem - -1. 排列问题是完全背包中å分棘手的问题。 -2. 其在迭代过程中需è¦å…ˆè¿­ä»£èƒŒåŒ…容é‡ï¼Œå†è¿­ä»£ç‰©å“个数,使得其在代ç ç†è§£ä¸Šè¾ƒéš¾å…¥æ‰‹ã€‚ - -#### Contribution - -本文档以力扣上[ç»„åˆæ€»å’ŒIV](https://leetcode.cn/problems/combination-sum-iv/)为例,æä¾›ä¸€ä¸ªäºŒç»´dp的代ç ä¾‹å­ï¼Œå¹¶æä¾›æ¨¡æ‹Ÿè¿‡ç¨‹ä»¥ä¾¿äºŽç†è§£ - -#### Code - -```cpp -int combinationSum4(vector& nums, int target) { - // 定义背包容é‡ä¸ºtarget,物å“个数为nums.size()çš„dp数组 - // dp[i][j]表示将第0-iä¸ªç‰©å“æ·»åŠ å…¥æŽ’åˆ—ä¸­ï¼Œå’Œä¸ºjçš„æŽ’åˆ—æ–¹å¼ - vector> dp (nums.size(), vector(target+1,0)); - - // 表示有0,1,...,n个物å“å¯é€‰æ‹©çš„æƒ…况下,和为0的选择方法为1:什么都ä¸å– - for(int i = 0; i < nums.size(); i++) dp[i][0] = 1; - - // 必须按列é历,因为å³è¾¹æ•°ç»„需è¦çŸ¥é“左边数组最低部的信æ¯ï¼ˆæŽ’列问题) - // åŽé¢çš„æ¨¡æ‹Ÿå¯ä»¥æ›´æ¸…楚的表现这么æ“作的原因 - for(int i = 1; i <= target; i++){ - for(int j = 0; j < nums.size(); j++){ - // åªæœ‰nums[j]å¯ä»¥å–的情况 - if(j == 0){ - if(nums[j] > i) dp[j][i] = 0; - // å¦‚æžœèƒŒåŒ…å®¹é‡æ”¾ä¸ä¸‹ é‚£ä¹ˆæ­¤æ—¶æ²¡æœ‰æŽ’åˆ—æ–¹å¼ - else dp[j][i] = dp[nums.size()-1][i-nums[j]]; - // å¦‚æžœèƒŒåŒ…å®¹é‡æ”¾çš„下 全排列方å¼ä¸ºdp[最底层][容é‡-该物å“容é‡]排列方å¼åŽé¢æ”¾ä¸€ä¸ªnums[j] - } - // 有多个numsæ•°å¯ä»¥å– - else{ - // å¦‚æžœèƒŒåŒ…å®¹é‡æ”¾ä¸ä¸‹ 那么沿用0-j-1个物å“çš„æŽ’åˆ—æ–¹å¼ - if(nums[j] > i) dp[j][i] = dp[j-1][i]; - // å¦‚æžœèƒŒåŒ…å®¹é‡æ”¾å¾—下 在dp[最底层][容é‡-该物å“容é‡]排列方å¼åŽé¢æ”¾ä¸€ä¸ªnums[j]åŽé¢æ”¾ä¸ªnums[j] - // INT_MAXé¿å…溢出 - else if(i >= nums[j] && dp[j-1][i] < INT_MAX - dp[nums.size()-1][i-nums[j]]) - dp[j][i] = dp[j-1][i] + dp[nums.size()-1][i-nums[j]]; - } - } - } - // 打å°dp数组 - for(int i = 0; i < nums.size(); i++){ - for(int j = 0; j <= target; j++){ - cout<