leetcode刷题

单词拆分

(这个递推还是挺抽象的,不太好理解)

注意是需要词语的顺序,因此这是一个排列问题,所以外层循环是背包,内层循环是物品。

bool wordBreak(string s, vector<string>& wordDict) {
        unordered_set<string> bags(wordDict.begin(), wordDict.end());
        vector<bool> dp(s.size() + 1, false);
        dp[0] = true;

        for(int i = 1;i <= s.size(); i++){
            for(int j = 0; j < i; j++){
                string word = s.substr(j, i - j);

                if(bags.find(word) != bags.end() && dp[j] == true)
                    dp[i] = true;
            }
        }

        return dp[s.size()];
    }

多重背包

多重背包和01背包的区别在于:对于每个不同的物品,有一个数量限制,既不是只能用一次,又不是可以无限使用。

解法比较简单,就是把每个物品拆分成单个物品,然后就转换为了01背包问题。

相关推荐

  1. leetcode笔记

    2024-05-26 01:42:25       44 阅读
  2. Leetcode

    2024-05-26 01:42:25       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-26 01:42:25       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-26 01:42:25       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-26 01:42:25       87 阅读
  4. Python语言-面向对象

    2024-05-26 01:42:25       96 阅读

热门阅读

  1. warning: ‘struct timespec‘ declared inside parameter list

    2024-05-26 01:42:25       29 阅读
  2. 5、设计模式之适配器模式/原型模式

    2024-05-26 01:42:25       33 阅读
  3. 001 mongodb

    2024-05-26 01:42:25       33 阅读
  4. QT--splitter的使用

    2024-05-26 01:42:25       37 阅读
  5. 39. 组合总和 - 力扣(LeetCode)

    2024-05-26 01:42:25       31 阅读
  6. 169. 多数元素

    2024-05-26 01:42:25       37 阅读
  7. 15、Go Gin常见响应返回详解

    2024-05-26 01:42:25       37 阅读
  8. 掌握C++回调:按值捕获、按引用捕获与弱引用

    2024-05-26 01:42:25       35 阅读