代碼隨想錄算法訓練營第三十天 | 01背包問題 二維 01背包問題 一維 416. 分割等和子集

46. 攜帶研究材料(第六期模擬筆試)

題目描述

小明是一位科學家,他需要參加一場重要的國際科學大會,以展示自己的最新研究成果。他需要帶一些研究材料,但是他的行李箱空間有限。這些研究材料包括實驗設備、文獻資料和實驗樣本等等,它們各自占據不同的空間,并且具有不同的價值。?

小明的行李空間為 N,問小明應該如何抉擇,才能攜帶最大價值的研究材料,每種研究材料只能選擇一次,并且只有選與不選兩種選擇,不能進行切割。

輸入描述

第一行包含兩個正整數,第一個整數 M 代表研究材料的種類,第二個正整數 N,代表小明的行李空間。

第二行包含 M 個正整數,代表每種研究材料的所占空間。?

第三行包含 M 個正整數,代表每種研究材料的價值。

輸出描述

輸出一個整數,代表小明能夠攜帶的研究材料的最大價值。

輸入示例
6 1
2 2 3 1 5 2
2 3 1 5 4 3
輸出示例
5
#include<bits/stdc++.h>
using namespace std;int n,bagweight;void solvation()
{std::vector<int> weight(n,0);vector<int> value(n,0);for(int i = 0 ; i < n; i++){cin >> weight[i];}for(int i = 0 ; i < n ; i++){cin >> value[i];}vector<vector<int>> dp(weight.size(),vector<int>(bagweight+1,0));for(int i = weight[0] ; i <= bagweight ; i ++){dp[0][i] = value[0];}for(int i = 1; i < weight.size() ; i++){for(int j = 0; j <= bagweight ; j ++){if(weight[i] > j) dp[i][j] = dp[i-1][j];else dp[i][j] = max(dp[i-1][j],dp[i-1][j - weight[i]]+ value[i] );}}cout << dp[weight.size() - 1][bagweight];
}int main()
{while(cin >> n >> bagweight){solvation();}return 0 ;
}

滾動數組的寫法:

#include<bits/stdc++.h>
#include<vector>
using namespace std;int n ,bagweight;void solveproblem()
{std::vector<int> weight(n);vector<int> value(n);for(int i = 0; i < n; i++){cin >> weight[i];}for(int i = 0; i < n; i++){cin >> value[i];}vector<int> dp(bagweight+1,0);for(int i = 0 ; i < weight.size(); i++){for( int j = bagweight ; j >= weight[i] ; j--){if(j < weight[i]) dp[j] = dp[j-1];else dp[j] = max(dp[j],dp[j - weight[i]] + value[i]);}//注意這里不是max(dp[j-1])}cout << dp[bagweight] <<endl;
}int main()
{while(cin >> n >> bagweight){solveproblem();}return 0 ;
}

416. 分割等和子集

給你一個?只包含正整數?的?非空?數組?nums?。請你判斷是否可以將這個數組分割成兩個子集,使得兩個子集的元素和相等。

示例 1:

輸入:nums = [1,5,11,5]
輸出:true
解釋:數組可以分割成 [1, 5, 5] 和 [11] 。

示例 2:

輸入:nums = [1,2,3,5]
輸出:false
解釋:數組不能分割成兩個元素和相等的子集
class Solution {
public:bool canPartition(vector<int>& nums) {int sum = 0;vector<int> dp(20000,0);for(int i = 0 ; i < nums.size() ; i++){sum += nums[i];}if(sum%2 == 1) return false;int mid = sum/2;for(int i = 0 ; i < nums.size(); i++){for(int j = mid ; j >= nums[i] ; j--){dp[j] = max(dp[j],dp[j - nums[i]] + nums[i]);}}if(dp[mid] == mid) return true;return false;}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44488.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44488.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44488.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

無題:天選之子?

1. 從一個人說起&#xff1a;孤獨信 原名獨孤如愿&#xff0c;字期彌頭云中郡&#xff08;今內蒙古自治區和林格爾縣&#xff09;人&#xff0c;鮮卑族西魏、北周(南北朝)時期名將&#xff0c;八柱國之一北塞俊郎&#xff0c;容儀俊美&#xff0c;善于騎射獨孤側帽&#xff1a…

SQL語法(DQL):SELECT 多表查詢之子查詢

1、子查詢 定義&#xff1a;如果某一個SQL語句A包含了一個查詢Select語句B&#xff0c;稱B叫做子查詢&#xff0c;稱A叫做主查詢&#xff0c;A帶有子查詢語句目的&#xff1a;提高代碼復用性&#xff0c;間接提高代碼開發效率分類&#xff1a; 條件子查詢&#xff1a;將子查詢…

開發指南042-產生待辦

整個平臺待辦是統一處理的&#xff0c;各業務微服務需要產生待辦時調用系統API <dependency><groupId>org.qlm</groupId><artifactId>qlm-api</artifactId><version>1.0-SNAPSHOT</version> </dependency> Autowired privat…

Nature Renderer 2022(植被渲染工具插件)

渲染大量詳細的植被。 自然渲染器通過替換Unity的默認地形細節和樹系統來提高植被渲染的質量。一切都適用于現有數據:使用相同的草地、植被和樹木,并保留現有地形。我們只是升級您的渲染器。 Unity驗證的解決方案 Nature Renderer受到25000多名開發人員的信任,是Unity驗證的…

Llama-2 vs. Llama-3:利用微型基準測試(井字游戲)評估大模型

編者按&#xff1a; 如何更好地評估和比較不同版本的大語言模型&#xff1f;傳統的學術基準測試固然重要&#xff0c;但往往難以全面反映模型在實際應用場景中的表現。在此背景下&#xff0c;本文作者別出心裁&#xff0c;通過讓 Llama-2 和 Llama-3 模型進行井字游戲對決&…

【JavaScript腳本宇宙】無處不在的JavaScript庫:解析音視頻處理與實時通信技術

JavaScript庫大揭秘&#xff1a;音視頻、互動體驗與實時通信 前言 在當今互聯網時代&#xff0c;JavaScript已經成為前端開發中不可或缺的一部分。隨著Web技術的不斷發展&#xff0c;出現了許多優秀的JavaScript庫&#xff0c;為開發者提供了豐富的工具和資源。本文將介紹幾個…

STM32智能機器人手臂控制系統教程

目錄 引言環境準備智能機器人手臂控制系統基礎代碼實現&#xff1a;實現智能機器人手臂控制系統 4.1 數據采集模塊 4.2 數據處理與控制算法 4.3 通信與網絡系統實現 4.4 用戶界面與數據可視化應用場景&#xff1a;機器人手臂管理與優化問題解決方案與優化收尾與總結 1. 引言 …

Linux系統中磁盤管理LVM與掛載

Linux系統中磁盤管理LVM與掛載 本文以屬于Linux系統基本概念&#xff0c;如果以查找教程教程&#xff0c;解決問題為主&#xff0c;只需要查看本文后半部分。如需要系統性學習請查看本文前半部分。 本文操作極容易導致主機無法自動重啟&#xff0c;請慎重操作。操作前務必要進…

火熱夏季:浦語*書生InternLM大模型實戰闖關-入門島之Linux基礎知識

一、ssh鏈接與端口映射并運行hello_wold.py 1.創建開發機 InternStudio創建開發機 2.進入開發機 3.Ssh鏈接開發機 powerShell終端ssh鏈接開發機。 4.創建一個hello_world.py文件web demo 5.運行web demo 6.端口映射 7.本地瀏覽器打開web 二、 VSCODE 遠程連接開發機并創建一個…

【最強八股文 -- 計算機網絡】【快速版】TCP 與 UDP 頭部格式

目標端口和源端口: 應該把報文發給哪個進程包長度: UDP 首部的長度跟數據的長度之和校驗和: 為了提供可靠的 UDP 首部和數據而設計&#xff0c;接收方使用檢驗和來檢查該報文段中是否出現差錯 源端口號和目的端口號: 用于多路復用/分解來自或送到上層應用的數據。告訴主機報文段…

[機器學習]-人工智能對程序員的深遠影響——案例分析

機器學習和人工智能對未來程序員的深遠影響 目錄 機器學習和人工智能對未來程序員的深遠影響1. **自動化編碼任務**1.1 代碼生成1.2 自動調試1.3 測試自動化 2. **提升開發效率**2.1 智能建議2.2 項目管理 3. **改變編程范式**3.1 數據驅動開發 4. **職業發展的新機遇**4.1 AI工…

數字統計

import java.util.Scanner;// 注意類名必須為 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的區別// 注意 while 處理多個 caseint a in.nextInt();i…

基于深度學習的點云平滑

基于深度學習的點云平滑是一種利用深度學習模型處理和優化三維點云數據以消除噪聲并提升平滑度的方法。該技術在自動駕駛、機器人導航、3D重建和計算機圖形學等領域有著廣泛應用。以下是關于這一領域的系統介紹&#xff1a; 1. 任務和目標 點云平滑的主要任務是從帶有噪聲和粗…

【計算機畢業設計】基于Springboot的足球青訓俱樂部管理系統【源碼+lw+部署文檔】

包含論文源碼的壓縮包較大&#xff0c;請私信或者加我的綠色小軟件獲取 免責聲明&#xff1a;資料部分來源于合法的互聯網渠道收集和整理&#xff0c;部分自己學習積累成果&#xff0c;供大家學習參考與交流。收取的費用僅用于收集和整理資料耗費時間的酬勞。 本人尊重原創作者…

Day66 代碼隨想錄打卡|回溯算法篇---分割回文串

題目&#xff08;leecode T131&#xff09;&#xff1a; 給你一個字符串 s&#xff0c;請你將 s 分割成一些子串&#xff0c;使每個子串都是 回文串。返回 s 所有可能的分割方案。 方法&#xff1a;本題是一個分割回文串的問題&#xff0c;是回溯算法的另一類問題。 針對一個字…

前端面試題日常練-day82 【面試題】

題目 希望這些選擇題能夠幫助您進行前端面試的準備&#xff0c;答案在文末 在Sass中&#xff0c;以下哪個功能用于創建一個混合器&#xff08;Mixin&#xff09;&#xff1f; a) include b) loop c) function d) component Sass中的嵌套規則可以幫助實現以下哪個目的&#xf…

英偉達今年在華銷售額預計將達120億美元、MiniMax創始人:三年后才會出現“殺手級”AI應用

ChatGPT狂飆160天&#xff0c;世界已經不是之前的樣子。 更多資源歡迎關注 1、英偉達今年在華銷售額預計將達120億美元 芯片咨詢公司SemiAnalysis報告預估&#xff0c;今年英偉達有望在中國銷售價值約120億美元的人工智能芯片。黃仁勛曾表示&#xff0c;希望借助新的芯片使得…

【算法】十進制轉換為二進制

目的&#xff1a;將十進制轉換為二進制 思路&#xff1a; 首先我們手算的情況是通過求余數算出進制數&#xff0c;同樣代碼也是通過做除法和求余數的方式&#xff0c;除法是得出下一次的被除數&#xff0c;而求余數是得到進制數 代碼&#xff1a; #include<stdio.h>/…

python基礎語法筆記(有C語言基礎之后)

input()用于輸入&#xff0c;其有返回值&#xff08;即用戶輸入的值&#xff09;&#xff0c;默認返回字符串。括號里可放提示語句 一行代碼若想分為多行來寫&#xff0c;需要在每一行的末尾加上“\” 單個“/”表示數學中的除法&#xff0c;不會取整。“//”才會向下取整。 …

Qt觸發paintEvent事件

常見情況下&#xff0c;paintEvent會在以下幾種情況下被觸發&#xff1a; 窗口初始化和顯示&#xff1a; 當窗口首次被創建、顯示或者窗口被覆蓋、最小化后再恢復時&#xff0c;paintEvent會被觸發以繪制窗口的內容。 部件大小或位置變化&#xff1a; 如果窗口或部件的大小或位…