首页 > 其他分享 >动态规划(5)

动态规划(5)

时间:2024-01-19 15:12:45浏览次数:21  
标签:遍历 int 规划 length wordDict 动态 true dp

目录

279完全平方数

  1. 对于遍历顺序,因为数字可以重复出现所以j从小到大
  2. 对于初始化我们要求最小值所以除了dp[0]=0,其他的都是一个大值
class Solution {
public:
    //dp[j]何为j的完全平方数的最小数量
    int numSquares(int n) {
        vector<int> dp(n+1,1000);
        dp[0]=0;
        for(int i=0;i<=sqrt(n);i++)
        {
            for(int j=i*i;j<=n;j++)
            {
                dp[j]=min(dp[j],dp[j-i*i]+1);
            }
        }
        return dp[n];

    }
};

139单词拆分

感觉已经上道了,能写出这种长的判断表达式

  1. dp[j]的含义,长度为j的目标串能否被worddict拼出
  2. 初始化,除了dp[0]其他的都为0,如果dp[0]是0,那么全部的表达式都会为0
  3. 遍历顺序,先遍历背包,再遍历物品,因为我们要把上一个状态中,所有能使dp[]置为1的状态都算出来
  4. 递推公式,对于当前的背包大小,遍历字符word,如果dp[j-word长度]为true且j之后到当前index的字串等于word,那么就说明能凑出dp,置为true
    当然,如果当前dp本身就是true,那就直接是true
class Solution {
public:
    //dp[j]的含义,长度为j的目标串能否被worddict拼出
    bool wordBreak(string s, vector<string>& wordDict) {
        int slen=s.length();
        int n=wordDict.size();
        vector<bool> dp(slen+1,false);
        dp[0]=true;
        for(int i=1;i<=slen;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(i>=wordDict[j].length())
                dp[i]=dp[i]||(dp[i-wordDict[j].length()]&&s.substr(i-wordDict[j].length(),wordDict[j].length())==wordDict[j]);
            }
        }
        return dp[slen];

    }
};

标签:遍历,int,规划,length,wordDict,动态,true,dp
From: https://www.cnblogs.com/liviayu/p/17974650

相关文章

  • CCF模拟_202312-1_仓库规划
    计算机软件能力认证考试系统样例输入4200-1-1120-1样例输出3103提交:#include<iostream>usingnamespacestd;intmain(){ intn,m;//仓库数量,维度 int**a;//二维数组,存放仓库位置信息 inti,j,font,itmp,key;//这仨是存放后边的临时变量 cin>>n>......
  • C/C++ 实现动态资源文件释放
    当我们开发Windows应用程序时,通常会涉及到使用资源(Resource)的情况。资源可以包括图标、位图、字符串等,它们以二进制形式嵌入到可执行文件中。在某些情况下,我们可能需要从可执行文件中提取自定义资源并保存为独立的文件。在这篇博客文章中,我们将讨论如何使用C++和WinAPI实现这个目标......
  • nacos 动态刷新 数组对象 List/数组类型、复杂类对象配置
    @Value环境依赖版本SpringCloud是个大前提,不然还是考虑上面方式或者原生接入方案;@NacosPropertySource(dataId="mydata",autoRefreshed=true)同时@RefreshScope方能接收到nacos的push数据。@NacosValue依赖springbootNacos动态刷新基本数据类型很简单,只需要在字段......
  • 动态语言、静态语言、强类型语言、弱类型语言的区别
    在学习编程语言的类型系统时,经常听说“静态语言”“动态语言”“强类型语言”和“弱类型语言”这些概念,它们究竟是什么意思呢?各个概念之间又有什么区别呢?如果你阅读互联网上的博客,你也可能会发现一些矛盾的观点,有的作者糊涂地认为静态语言=强类型语言,或者动态语言=弱类型语言,但它......
  • 1480.一维数组的动态和
    1.题目介绍给你一个数组nums。数组「动态和」的计算公式为:runningSum[i]=sum(nums[0]…nums[i])。请返回nums的动态和。示例1:输入:nums=[1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程为[1,1+2,1+2+3,1+2+3+4]。示例2:输入:nums=[1,1,1,1,1]输出:[1,2,3,4,5]......
  • 动态规划(4) 完全背包的遍历顺序
    目录377组合总和Ⅳ进阶版爬楼梯322零钱兑换377组合总和ⅣclassSolution{public:intcombinationSum4(vector<int>&nums,inttarget){intn=nums.size();vector<int>dp(target+1,0);dp[0]=1;for(intj=0;j<=target;j++)......
  • 动态规划(3)
    目录474完全背包模板题518零钱兑换474本地的dp数组由于需要考虑0和1两个元素,所以多了一维,是一个三维的dp数组,然后再使用滚动数组降至2维递推公式:dp[j][k]=max(dp[j][k],1+dp[j-num0][k-num1]);classSolution{public:intfindMaxForm(vector<string>&strs,intm,in......
  • 01分数规划
    01分数规划有\(n\)个物品,每个物品有两个权值\(a_{i}\),\(b_{i}\),现在要去掉\(k\)个物品,使得剩下的\(n-k\)个物品\(\frac{\suma_{i}}{\sumb_{i}}\)有最大值,并求出该最大值。\(\frac{\suma_{i}}{\sumb_{i}}\)=\(\frac{\suma_{i}*w_{i}}{\sumb_{i}*w_{i}}\)(\(w_......
  • 动态规划(2)
    目录01背包二维数组滚动数组416分割等和子集1049最后一块石头的重量494目标和01背包二维数组注意:初始化遍历顺序//二维dp数组实现#include<bits/stdc++.h>usingnamespacestd;intn,bagweight;//bagweight代表行李箱空间voidsolve(){vector<int>weight(n......
  • 数据展现之道:精心打造可在线浏览的动态数据报表
    前言如今各类BI产品大行其道,“数据可视化”成为一个热门词汇。相比价格高昂的各种BI软件,用Excel来制作动态报表就更加经济便捷。今天小编就将为大家介绍一下如何使用葡萄城公司的纯前端表格控件——SpreadJS来实现一个Excel动态报表:实现步骤1.在原始数据的基础上生成数据透视表......