当前位置: 首页 > news >正文

加强局网站建设网站建设域名多少钱

加强局网站建设,网站建设域名多少钱,上海建筑设计公司排名前20,网站打赏怎么做的学习资料:代码随想录 文中含大模型生成内容 完全背包 52. 携带研究材料(第七期模拟笔试) 相比于之前的一个物品只能放一次,这次一个物品可以放多次了 递推公式变成了dp[i][j] max(dp[i - 1][j], dp[i][j - weight[i]] valu…

学习资料:代码随想录

文中含大模型生成内容

完全背包

52. 携带研究材料(第七期模拟笔试)

相比于之前的一个物品只能放一次,这次一个物品可以放多次了

递推公式变成了dp[i][j] = max(dp[i - 1][j], dp[i][j - weight[i]] + value[i]);在计算不放该物品有几种方法时,只把该物品的空间让开就可以了

这是二维,先遍历背包还是物品都行

#include <iostream>
#include <vector>
using namespace std;int main(){
int n,v;
cin>>n>>v;vector<int> weight(n,0);
vector<int> value(n,0);for(int i=0;i<n;i++){cin>>weight[i]>>value[i];
}vector<vector<int>> dp(n,vector<int>(v+1,0));for(int j=value[0];j<=v;j++){dp[0][j] = ((j/weight[0])*value[0]);
}for(int i=1;i<n;i++){for(int j=0;j<=v;j++){if(j<weight[i]) dp[i][j] = dp[i-1][j];else{dp[i][j] = max(dp[i-1][j],dp[i][j-weight[i]]+value[i]);}}
}
cout<<dp[n-1][v]<<endl;
return 0;
}

压缩到一维直接借用代码随想录的回答:

将上一层dp[i-1] 的那一层拷贝到 当前层 dp[i] ,那么 递推公式由:dp[i][j] = max(dp[i - 1][j], dp[i][j - weight[i]] + value[i]) 变成: dp[i][j] = max(dp[i][j], dp[i][j - weight[i]] + value[i])

这里有录友想,这样拷贝的话, dp[i - 1][j] 的数值会不会 覆盖了 dp[i][j] 的数值呢?

并不会,因为 当前层 dp[i][j] 是空的,是没有计算过的。

变成 dp[i][j] = max(dp[i][j], dp[i][j - weight[i]] + value[i]) 我们压缩成一维dp数组,去掉 i 层数维度。

即该点还没计算,仍是上一层的值

这道题求价值,对于一维先遍历谁也是无所谓的。

但是,无论二维还是一维,j倒序遍历不行,因为要用到本层的j了。(这里我没模拟,但感觉应该是对的)

一维:

#include <iostream>
#include <vector>
using namespace std;int main(){
int n,v;
cin>>n>>v;vector<int> weight(n,0);
vector<int> value(n,0);for(int i=0;i<n;i++){cin>>weight[i]>>value[i];
}vector<int> dp(v+1,0);for(int i=0;i<n;i++){for(int j=0;j<=v;j++){if(j>=weight[i]){dp[j] = max(dp[j],dp[j-weight[i]]+value[i]);}}
}
cout<<dp[v]<<endl;
return 0;
}

518.零钱兑换II

力扣题目链接

求有几种方法

class Solution {
public:int change(int amount, vector<int>& coins) {// 定义vector<vector<uint64_t>> dp(coins.size(),vector<uint64_t>(amount+1,0));// 初始化for(int i=0;i<coins.size();i++){      //遇到重定义的报错先排查一下是不是i后面写的逗号dp[i][0] = 1;}for(int j=coins[0];j<=amount;j++){if(j%coins[0]==0) dp[0][j] = 1;      }// 遍历for(int i =1;i<coins.size();i++){for(int j=1;j<=amount;j++){if(j<coins[i]) dp[i][j] = dp[i-1][j];else{dp[i][j] = dp[i-1][j]+dp[i][j-coins[i]];}}}return dp[coins.size()-1][amount];      }
};

对于一维,就只能先遍历物品了。为什么二维可以先遍历背包而一维不行?j-coins可能会被覆盖掉,举例coin=1,2,amount=3,根据递推公式dp[j]+=dp[j-coins[i]]和dp[i][j]=dp[i-1][j]+dp[i][j-coins[i]]对比来看,外层是j,一维在物品0时用的j-coins[i]是处理过其他物品后的dp值

class Solution {
public:int change(int amount, vector<int>& coins) {// 定义vector<uint64_t> dp(amount+1,0);// 初始化for(int j=0;j<=amount;j++){if(j%coins[0]==0) dp[j] = 1;      }// dp[0] = 1;// 遍历for(int i =1;i<coins.size();i++){for(int j=0;j<=amount;j++){if(j>=coins[i]){dp[j] = dp[j]+dp[j-coins[i]];}}}return dp[amount];      }
};

377. 组合总和 Ⅳ

力扣题目链接

求的是排列数,这时就是一维先遍历背包求得的了,让它帮我模拟一下:

感觉这里就暂时摒弃和求组合的方法的比较,单纯从求排列的角度去理解更清晰

class Solution {
public:int combinationSum4(vector<int>& nums, int target) {vector<uint64_t> dp(target+1,0);dp[0] = 1;for(int j=0;j<=target;j++){for(int i =0;i<nums.size();i++){if(j>=nums[i]) dp[j]=dp[j]+dp[j-nums[i]];}} return dp[target];}
};

70. 爬楼梯(进阶版)

卡码网:57. 爬楼梯

相当于求的还是方法数

物品重量就是台阶数

#include <iostream>
#include <vector>using namespace std;int main(){int n,m;
cin>>n>>m;vector<int> dp(n+1,0);dp[0]=1;
for(int j=0;j<=n;j++){for(int i=1;i<=m;i++){if(j>=i) dp[j] +=dp[j-i]; }
}cout<<dp[n];return 0;
}

http://www.dtcms.com/a/461001.html

相关文章:

  • 记录最新 Neo4j 安装过程(截图实操)、使用、踩坑 Neo4j 5.26.13、JDK 17安装
  • JavaWeb项目部署到Tomcat的三种方法
  • MyBatis配置全解析:核心要点详解
  • apache-tomcat 安装部署
  • 如何为卫生中心构建安全高效的网络系统?
  • 抖音代运营业务介绍seo文案范例
  • 珠海网站排名提升昆明网站建设frf
  • 使用 Loki + Promtail + Grafana 实现 Docker 容器日志采集与可视化
  • Dockerfile实战案例详解
  • Paimon系列:主键表流读之changelog producer
  • 本地 Docker 镜像送上云:腾讯云无服务器与容器化全栈迁移实战
  • win10安装spark3.1详细流程(小白用)
  • Spark on k8s部署
  • Kotlin 内联函数、高阶函数、扩展函数
  • 用化学方法nmp溶剂从佳能cmos传感器上剥离拜耳矩阵和微透镜
  • Apache Tomcat 详解
  • 矩阵奇异值分解(SVD)中Golub–Kahan 双对角化 + 对双对角矩阵的隐式QR详解
  • QT MVC中Model的特点及使用注意事项
  • wordpress最快仿站宁波网络营销服务
  • 徕卡RTC360助力铝单板设计效率提升
  • EasyExcel 读取 Excel 文件指南
  • LabVIEW光栅旋转式光谱仪
  • 上海营销网站设计去设计公司还是去企业
  • 怎么查询自己注册的商标东营网站建设课程定位优化
  • 【rabbitmq 高级特性】RabbitMQ 延迟队列全面解析
  • linux学习笔记(22)线程同步——线程信号量
  • 如何用营销自动化提升开信率与转化率
  • 人形机器人安全研究
  • 比斯特自动化|为什么焊接18650电池离不开点焊机?
  • 多字节串口收发IP设计(二)串口通信扫盲