当前位置:网站首页>871.最低加油次数(动态规划)
871.最低加油次数(动态规划)
2022-07-30 05:39:00 【Linke66】
解题思路:
动态规划
dp[i]表示,加油i次最远可以到达的距离;
关键,如果经过j次加油可以到达i这个位置的加油站,那么就可以在这个站加油获得油量,从而更新dp[j+1]
class Solution {
public:
//stations[0]是加油站位置,stations是加油站有多少汽油
int minRefuelStops(int target, int startFuel, vector<vector<int>>& stations) {
int n=stations.size();
//dp[i]代表加油i次能够走到的最远距离
//因为一共有n个加油站,因此可以加油n次,包括不加油的0次
vector<long>dp(n+1,0);
dp[0]=startFuel; //一次油不加,一开始有多少油,就走多远
for(int i=0;i<n;++i){
//从第1个(下标为0)的加油站开始
for(int j=i;j>=0;--j){
//如果可以经过j次加油到达i这个加油站,那么就可以在这个站加油获得油量
if(dp[j]>=stations[i][0]){
dp[j+1]=max(dp[j+1],dp[j]+stations[i][1]);
}
}
}
for(int i=0;i<=n;++i){
if(dp[i]>=target)
return i;
}
return -1;
}
};
改变题干:
初始有100单位燃油;
油箱有最大容量100单位燃油;
其他不变;
class Solution {
public:
//stations[0]是加油站位置,stations是加油站有多少汽油
int minRefuelStops(int target,vector<vector<int>>& stations) {
int n=stations.size();
//dp[i]代表加油i次能够走到的最远距离
//因为一共有n个加油站,因此可以加油n次,包括不加油的0次
vector<long>dp(n+1,0);
dp[0]=100; //一次油不加,一开始有100升油,就走多远
for(int i=0;i<n;++i){
//从第1个(下标为0)的加油站开始
for(int j=i;j>=0;--j){
//如果可以经过j次加油到达i这个加油站,那么就可以在这个站加油获得油量
if(dp[j]>=stations[i][0]){
//在该站获得油量以后,最多也只能再往前走100
dp[j+1]=max(dp[j+1],dp[j]+min(100,stations[i][1]));
}
}
}
for(int i=0;i<=n;++i){
if(dp[i]>=target)
return i;
}
return -1;
}
};
边栏推荐
猜你喜欢
随机推荐
"Hou Lang" programmer version, a speech dedicated to a new generation of programmers, He Bing's "Hou Lang" speech imitation show
It's time to have to learn English, give yourself multiple paths
机器学习—梯度下降Gradient Descent Optimization—c语言实现
Error: npm ERR code EPERM
JVM之GC 调优工具 Arthas 实战使用(二)
idea 编译protobuf 文件的设置使用
My first understanding of MySql, and the basic syntax of DDL and DML and DQL in sql statements
mysql time field is set to current time by default
4461. Range Partition (Google Kickstart2022 Round C Problem B)
cmd(命令行)操作或连接mysql数据库,以及创建数据库与表
2022年SQL经典面试题总结(带解析)
分布式事务之 Seata框架的原理和实战使用(三)
解决没有配置本地nacos但是一直发生localhost8848连接异常的问题
分布式事务之 Atomikos 原理和使用(一)
cmd (command line) to operate or connect to the mysql database, and to create databases and tables
np.argsort()函数详细解析
破纪录者(Google Kickstart2020 Round D Problem A)
cookie和session区别
Personal blog system (with source code)
[Image processing] Image skeleton extraction based on central axis transformation with matlab code