01背包与多重背包写法

 

 

01背包外层控制物品

内层控制重量,从大到小,从小到大会重复

 

多重背包外层控制重量

内层控制物品

        // for(int i = 0; i < wordDict.size(); i++)   
        // {
        //     int m = wordDict[i].size();
        //     for(int j = s.length() - 1; j >= m - 1; j--)
        //     {
        //         int k = j;
        //         while(k >= j - m + 1)
        //         {
        //             if(s[k] != wordDict[i][m - 1 - (j - k)])
        //                 break;
        //             k--;
        //         }
        //         if(k >= j - m + 1) continue;
        //         if(j - m < 0) dp[j] = max(dp[j], m);
        //         else dp[j] = max(dp[j], dp[j - m] + m);
        //         cout << j << "  " << dp[j] << endl;
        //     }
        // }

        for(int j = 0; j < s.length(); j++)
        {
            for(int i = 0; i < wordDict.size(); i++)
            {
                int m = wordDict[i].size();
                if(j - m + 1 >= 0)
                {
                    int k = j;
                    while(k >= j - m + 1)
                    {
                        if(s[k] != wordDict[i][m - 1 - (j - k)])
                            break;
                        k--;
                    }
                    if(k >= j - m + 1) continue;
                    if(j - m < 0) dp[j] = max(dp[j], m);
                    else dp[j] = max(dp[j], dp[j - m] + m);
                }

            }


        }

 

posted @ 2022-09-09 21:55  WTSRUVF  阅读(20)  评论(0编辑  收藏  举报