算法训练营day45

devtools/2024/10/18 22:36:54/

题目1:1049. 最后一块石头的重量 II - 力扣(LeetCode)

这道题主要的思路是把题目转换成分成两份,然后转换成一个重量为 sum / 2 的背包去装石头,尽可能将背包装的最大,那么最后最小省的石头就是   (sum - dp[j]) - dp[j] 前边是剩下的石头,后边是能装的最大的石头

class Solution {
public:int lastStoneWeightII(vector<int>& stones) {int sum = 0;for(int i = 0;i < stones.size();i++) {sum += stones[i];}int target = sum / 2;vector<int> dp(target + 1);for(int i = 0;i < stones.size();i++) {for(int j = target;j >= stones[i];j--) {dp[j] = max(dp[j], dp[j - stones[i]] + stones[i]);// std::cout << dp[j] << std::endl;}// std::cout << "-------" << std::endl;}// std::cout << dp[target] << std::endl;return sum - 2* dp[target];}
};

题目2:494. 目标和 - 力扣(LeetCode)

class Solution {
public:int findTargetSumWays(vector<int>& nums, int target) {int sum = 0;for(int i = 0;i < nums.size();i++)  {sum += nums[i];}if((sum - target) % 2 != 0) return 0;if(abs(target) > sum) return 0;int bagweight = (sum - target) / 2;vector<int> dp(bagweight + 1, 0);dp[0] = 1;for(int i = 0;i < nums.size();i++) {for(int j = bagweight;j >= nums[i];j--) {dp[j] += dp[j - nums[i]];}}return dp[bagweight];}
};

题目3:474. 一和零 - 力扣(LeetCode)

class Solution {
public:int findMaxForm(vector<string>& strs, int m, int n) {vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0));for(string str : strs) {int zernums = 0;int onenums = 0;for(char ch : str) {if(ch == '0') zernums++;else onenums++;}for(int i = m;i >= zernums;i--) {for(int j = n;j >= onenums;j--) {dp[i][j] = max(dp[i][j], dp[i - zernums][j - onenums] + 1);}}}return dp[m][n];}
};


http://www.ppmy.cn/devtools/45241.html

相关文章

.NET IoC 容器(三)Autofac

目录 .NET IoC 容器&#xff08;三&#xff09;AutofacAutofacNuget 安装实现DI定义接口定义实现类依赖注入 注入方式构造函数注入 | 属性注入 | 方法注入注入实现 接口注册重复注册指定参数注册 生命周期默认生命周期单例生命周期每个周期范围一个生命周期 依赖配置Nuget配置文…

OrangePi AIpro初识及使用大模型GPT-Neo-1.3B测试

OrangePi AIpro介绍 1.1. 开发板简介 Orange Pi AI Pro 开发板是香橙派联合华为精心打造的高性能AI 开发板&#xff0c;其搭 载了昇腾AI 处理器&#xff0c;可提供8TOPS INT8 的计算能力&#xff0c;内存提供了8GB 和16GB 两种版本。可以实现图像、视频等多种数据分析与推理…

STM32 OTA需要注意问题

一、OTA设计思路&#xff08;问题&#xff09; 1、根据stm32f405 flash分布&#xff0c;最初将flash划分为四个区域&#xff0c;分别是Bootloader、APP1、APP2、参数区&#xff0c;设备上电后&#xff0c;进入Bootloader程序&#xff0c;判断OTA参数&#xff0c;根据参数来确定…

python判断文件是否存在

import os test_path "/Users/yxk/Desktop/test/GrayScale.tif" if(os.path.exists(test_path)):print(文件存在&#xff01;&#xff01;&#xff01;&#xff01;) else:print("文件不存在&#xff01;&#xff01;&#xff01;&#xff01;")结果如下 …

9款实用而不为人知的小众软件推荐!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 在电脑软件的浩瀚海洋中&#xff0c;除了那些广为人知的流行软件外&#xff0c;还有许多简单、干净、功能强大且注重实用功能的小众软件等待我们…

JavaScript(ES6)入门

ES6 1、介绍 ECMAScript 6&#xff08;简称ES6&#xff09;是于2015年6月正式发布的JavaScript 语言的标准&#xff0c;正式名为ECMAScript 2015&#xff08;ES2015&#xff09;。它的目标是使得JavaScript语言可以用来编写复杂的大型应用程序&#xff0c;成为企业级开发语言。…

Nginx超时时间

Nginx是一款自由、开源、高性能的HTTP和反向代理服务器&#xff0c;它可以通过不同的设置来提高网站的性能和安全性。其中&#xff0c;设置Nginx超时时间非常重要&#xff0c;因为它将直接影响网站的响应速度和用户体验。本文将从多个方面详细阐述Nginx超时时间的设置方法与注意…

Spring Cloud 应用框架

Spring Cloud 是基于 Spring Boot 的一套工具集&#xff0c;用于构建分布式系统中的常见模式。它提供了服务发现、配置管理、智能路由、服务熔断、负载均衡、全链路追踪等一系列功能&#xff0c;帮助开发者快速构建和部署分布式微服务架构。本文将详细介绍 Spring Cloud 的核心…