代码随想录算法训练营第36期DAY49

DAY49

139单词拆分

没有思路。

  1. 回溯法

回溯怎么做呢:拼接str,看能不能拼出来。注意每个单词能用多次,不是用了就没。

但是语法还是难写。

自己的思路不好,题解思路:枚举所有分割字符串,判断是否在字典集中出现过。

算了别为难自己。

  1. 动态规划

复习substr函数:

  1. class Solution {
  2.     public:
  3.         bool wordBreak(string s, vector<string>& wordDict) {
  4.             unordered_set<stringset(wordDict.begin(), wordDict.end());
  5.             vector<booldp(s.size() + 1);
  6.             dp[0] = true;
  7.             // 排列数,先背包容量再物品
  8.             for (int i = 1; i <= s.size(); i++) {
  9.                 for (int j = 0; j < i; j++) {
  10.                     //不算i
  11.                     string word = s.substr(j, i - j );
  12.                     if (set.find(word) != set.end() && dp[j])
  13.                         dp[i] = true;
  14.                 }
  15.             }
  16.             return dp[s.size()];
  17.         }
  18.     };

131分割回文串

回溯法的复习。

  1. class Solution {
  2. vector<vector<string>> res;
  3. vector<string>path;
  4. bool ishuiwen(string s){
  5.     for(int i=0,j=s.size()-1;i<j;i++,j--){
  6.         if(s[i]!=s[j]) return false;
  7.     }
  8.     return true;
  9. }
  10. void backtracking(string s,int startindex){
  11.     if(startindex>=s.size()){
  12.         res.push_back(path);
  13.         return ;
  14.     }
  15.     for(int i=startindex;i<s.size();i++){
  16.         string tmpstr=s.substr(startindex,i-startindex+1);
  17.         if(!ishuiwen(tmpstr)) continue;
  18.         path.push_back(tmpstr);
  19.         backtracking(s,i+1);
  20.         path.pop_back();
  21.     }
  22. }
  23. public:
  24.     vector<vector<string>> partition(string s) {
  25.         res.clear();
  26.         path.clear();
  27.         backtracking(s,0);
  28.         return res;
  29.     }
  30. };

多重背包理论基础

卡码网56携带矿石资源

56. 携带矿石资源(第八期模拟笔试)

  1. Vector push_back:
  1. #include<iostream>
  2. #include<vector> 
  3. using namespace std;
  4. int main(){
  5.     int bagweight,n;
  6.     scanf("%d%d",&bagweight,&n);
  7.     vector<intweight(n,0);
  8.     vector<intvalue(n,0);
  9.     vector<intnums(n,0);
  10.     for(int i=0;i<n;i++) scanf("%d",&weight[i]);
  11.     for(int i=0;i<n;i++) scanf("%d",&value[i]);
  12.     for(int i=0;i<n;i++) scanf("%d",&nums[i]);
  13.     //unfold:
  14.     for(int i=0;i<n;i++){
  15.         while(nums[i]>1){
  16.             weight.push_back(weight[i]);
  17.             value.push_back(value[i]);
  18.             nums[i]--;
  19.         }
  20.     }
  21.     vector<intdp(bagweight+1);
  22.     dp[0]=0;
  23.     //01背包问题:
  24.     for(int i=0;i<weight.size();i++){
  25.         for(int j=bagweight;j>=weight[i];j--)
  26.         dp[j]=max(dp[j],dp[j-weight[i]]+value[i]);
  27.     }
  28.     printf("%d",dp[bagweight]);
  29.     return 0;
  30. }

  1. 把每种商品的遍历个数放在01背包里面再遍历一遍:
  1. #include<iostream>
  2. #include<vector> 
  3. using namespace std;
  4. int main(){
  5.     int bagweight,n;
  6.     scanf("%d%d",&bagweight,&n);
  7.     vector<intweight(n,0);
  8.     vector<intvalue(n,0);
  9.     vector<intnums(n,0);
  10.     for(int i=0;i<n;i++) scanf("%d",&weight[i]);
  11.     for(int i=0;i<n;i++) scanf("%d",&value[i]);
  12.     for(int i=0;i<n;i++) scanf("%d",&nums[i]);
  13.     vector<intdp(bagweight+1);
  14.     dp[0]=0;
  15.     //01背包问题:
  16.     for(int i=0;i<weight.size();i++){
  17.         for(int j=bagweight;j>=weight[i];j--){
  18.             for(int k=1;k<=nums[i]&&(j>=k*weight[i]);k++)
  19.         dp[j]=max(dp[j],dp[j-k*weight[i]]+k*value[i]);
  20.         }
  21.     }
  22.     printf("%d",dp[bagweight]);
  23.     return 0;
  24. }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/24634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣每日一题85:最大矩形

题目 困难 相关标签 相关企业 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵&#xff0c;找出只包含 1 的最大矩形&#xff0c;并返回其面积。 示例 1&#xff1a; 输入&#xff1a;matrix [["1","0","1","0",&q…

使用 Django 和 MQTT 构建实时数据传输应用

文章目录 什么是 MQTT&#xff1f;Django 中的 MQTT结论 在现代的 Web 应用程序开发中&#xff0c;实时数据传输变得越来越重要。MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的发布/订阅消息传输协议&#xff0c;而 Django 是一个流行的 Pyt…

如何解决访问网站时IP被限制的问题?

在互联网上&#xff0c;用户可能会面临一个令人困扰的问题——当尝试访问某个特定的网站时&#xff0c;却发现自己的IP地址被该网站屏蔽。 IP地址被网站屏蔽是一个相对常见的现象&#xff0c;而导致这种情况的原因多种多样&#xff0c;包括恶意行为、违规访问等。本文将解释IP地…

自然语言处理:第三十二章HippoRAG:性能提高20% - 受海马体启发的RAG

文章链接: HippoRAG: Neurobiologically Inspired Long-Term Memory for Large Language Models 项目地址: OSU-NLP-Group/HippoRAG: HippoRAG is a novel RAG framework inspired by human long-term memory that enables LLMs to continuously integrate knowledge across e…

Vue3 + TS + Antd + Pinia 从零搭建后台系统(一) 脚手架搭建 + 入口配置

简易后台系统搭建开启&#xff0c;分几篇文章更新&#xff0c;本篇主要先搭架子&#xff0c;配置入口文件等目录 效果图一、搭建脚手架&#xff1a;二、处理package.json基础需要的依赖及运行脚本三、创建环境运行文件四、填充vue.config.ts配置文件五、配置vite-env.d.ts使项目…

java 大型企业MES生产管理系统源码:MES系统与柔性化产线控制系统的关系、作用

MES定义为“位于上层的计划管理系统与底层的工业控制之间的面向车间层的管理信息系统”,它为操作人员/管理人员提供计划的执行、跟踪以及所有资源(人、设备、物料、客户需求等)的当前状态。 MES系统与柔性化产线控制系统的关系 MES&#xff08;制造执行系统&#xff09;是一种…

2003NOIP普及组真题 3. 数字游戏

线上OJ 地址&#xff1a; 【03NOIP普及组】数字游戏 此题考察的是 区间DP 前缀和 核心思想&#xff1a; 1、这道题主要考查了动态规划的思想。通过分析题目&#xff0c;可以发现需要 枚举环上所有划分为m组 的不同方案&#xff0c;来求得最大或最小值。属于 环上动态规划 问…

2024.6.7学习记录

1、css面试题复习加整理 2、dp刷题 也是水

阅读笔记——《AFLNET: A Greybox Fuzzer for Network Protocols》

【参考文献】Pham V T, Bhme M, Roychoudhury A. Aflnet: a greybox fuzzer for network protocols[C]//2020 IEEE 13th International Conference on Software Testing, Validation and Verification (ICST). IEEE, 2020: 460-465.【注】本文仅为作者个人学习笔记&#xff0c;…

华媒舍:3步实际操作教大家快速升级活动策划实际效果

什么叫活动策划推广&#xff1f;活动策划推广指通过制定目标与执行一系列活动来推广宣传企业、产品和服务。这种活动可以包括线上与线下宣传营销、社会化营销、品牌合作等各种方式。正确活动策划推广能够帮助企业在竞争激烈的市场中突围&#xff0c;吸引住目标群体并提高销售总…

大语言模型的sft

https://zhuanlan.zhihu.com/p/692892489https://zhuanlan.zhihu.com/p/6928924891.常见的sft的开发流程 a.根据业务场景调整提示词;越详细越好,不要让模型理解歧义,拆分。 b.尝试闭源和开源,以评估LLM能够解决这类场景问题。 c.准备数据,包括多个子任务。 d.训练上线…

电脑提示缺失iUtils.dll文件怎么办,分享几种靠谱的解决方法

在现代科技发展迅猛的时代&#xff0c;电脑已经成为我们生活和工作中不可或缺的工具。然而&#xff0c;随着使用时间的增长&#xff0c;电脑也会出现一些问题&#xff0c;其中之一就是开机时弹出窗口提示找不到iUtils.dll文件。这个问题可能会给用户带来困扰和不便&#xff0c;…

Python的登录注册界面跳转汽车主页面

1.登录注册界面的代码&#xff1a; import tkinter as tk from tkinter import messagebox,ttk from tkinter import simpledialog from ui.car_ui import start_car_ui# 设置主题风格 style ttk.Style() style.theme_use("default") # 可以根据需要选择不同的主题…

切莫被人工智能的洪流吞噬

切莫被人工智能的洪流吞噬 当今社会似乎正在被“人工智能”的概念淹没&#xff0c;各行各业也都期望能与其挂钩&#xff0c;彷佛这就是新世代下的灵药&#xff0c;有人把这一现象称为“旧互联网时代的新革命”。但是我们&#xff0c;这一现象的缔造者&#xff0c;又处于这洪流…

计算机网络--计算机网络概念

计算机网络--计算机网络概念 计算机网络--物理层 计算机网络--数据链路层 计算机网络--网络层 计算机网络--传输层 计算机网络--应用层 0.计算机网络简介 0.2 计算机网络的功能简介 数据通信(连通性)资源共享&#xff1a; 软件硬件数据 分布式处理 多台计算机各自承担同…

项目-双人五子棋对战:匹配模块的实现(4)

完整代码见: 邹锦辉个人所有代码: 测试仓库 - Gitee.com 在上一篇中, 我们已经讲到了匹配模块中前后端的接口约定, 也讲到了前后端它们是怎么完成发送请求, 接收请求, 处理响应, 返回响应这个过程的. 在这一篇中, 我们将对匹配模块用到的一些组件, 进行讲解. 后端代码 匹配器…

【Linux取经路】网络套接字编程——初识篇

文章目录 一、端口号1.1 认识端口号1.2 端口号 VS 进程 PID 二、认识 TCP 协议三、认识 UDP四、网络字节序列五、socket 编程接口5.1 常用 API5.2 sockaddr 结构 六、结语 一、端口号 网络通信的本质是应用层软件进行数据的发送和接受&#xff0c;软件在启动之后&#xff0c;本…

网络安全快速入门(十五)(下)手动创建用户及su,sudo命令

15.8 序言 前面我们已经大概了解了创建用户一些相关文件&#xff0c;接下来我们来手动创建用户&#xff0c;话不多说&#xff0c;我们直接开搞&#xff01;&#xff01;&#xff01; 15.9 手动创建用户&#xff1a; 一般来讲&#xff0c;我们创建用户通过useradd和passwd命令来…

python数据分析-心脏衰竭分析与预测

研究背景 人的心脏有四个瓣膜&#xff0c;主动脉银、二尖、肺动脉和三尖源 不管是那一个膜发生了病变&#xff0c;都会导致心脏内的血流受到影响&#xff0c;这就是通常所说的心脏期膜病&#xff0c;很多是需要通过手术的方式进行改善的。随着人口老龄化的加剧,&#xff0c;心…

Java基础_异常

Java基础_异常 异常体系介绍编译时异常和运行时异常异常的作用异常的处理方式JVM默认的处理方式自己处理&#xff08;捕获异常&#xff09;try...catch灵魂四问Throwable的成员方法 抛出处理 综合练习自定义异常来源Gitee地址 异常体系介绍 异常是什么&#xff1f; 程序中可能出…