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

Day 2

目录

  • 1.牛牛的快递(pass)
    • 1.1解析
    • 1.2代码
  • 2.最小花费爬楼梯 (pass)
    • 2.1解析
    • 2.2代码
  • 3.数组中两个字符串的最小距离 (pass)
    • 3.1解析
    • 3.2代码

1.牛牛的快递(pass)

牛牛的快递

1.1解析

在这里插入图片描述

1.2代码

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    float a;
    char b;
    cin>>a>>b;
    int price=0;//结果
    if(b=='y')price+=5;//加急
    if(a<=1.0) cout<<(price+20);
    else 
    {
        price+=20;//先加上起步价
        a--;
        //price+=ceil(a);//向上取整函数
        if(a-(int)a>0)price+=(int)a+1;
        else price+=(int)a;
        cout<<price;
    }
}

2.最小花费爬楼梯 (pass)

最小花费爬楼梯
技能:线性dp

2.1解析

在这里插入图片描述

2.2代码

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n=0;
    cin>>n;
    vector<int> cost(n);
    for(int i=0;i<n;i++)
        cin>>cost[i];
    
    vector<int> dp(n+1);
    for(int i=2;i<=n;i++)
        dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
    cout<<dp[n];
}

3.数组中两个字符串的最小距离 (pass)

数组中两个字符串的最小距离
技能:哈希、双指针、字符串

3.1解析

在这里插入图片描述

在这里插入图片描述

3.2代码

//运行超时了
//O(N^2)
#include <iostream>
#include<vector>
#include<limits.h>
using namespace std;

int main() {
    int n=0;
    cin>>n;
    string str1,str2;
    cin>>str1>>str2;
    vector<string> strs(n);
    for(auto& str:strs) cin>>str;

    int ret=INT_MAX;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
            if((strs[i]==str1&&strs[j]==str2)||(strs[i]==str2&&strs[j]==str1))
                ret=min(ret,abs(i-j));
    }
    if(ret==INT_MAX)cout<<-1;
    else
    cout<<ret;
}
//优化->时间复杂度:O(N)
#include <iostream>
#include<vector>
#include<limits.h>
using namespace std;

int main() {
    int n=0;
    cin>>n;
    string str1,str2;
    cin>>str1>>str2;
    vector<string> strs(n);
    for(auto& str:strs) cin>>str;

    int prev1=-1,prev2=-1,ret=INT_MAX;
    for(int i=0;i<n;i++)
    {
        if(strs[i]==str1)//向前找最近的str2
        {
            prev1=i;
            if(prev2!=-1)
                ret=min(ret,prev1-prev2);
        }
        if(strs[i]==str2)//向前找最近的str1
        {
            prev2=i;
            if(prev1!=-1)
                ret=min(ret,prev2-prev1);
        }
    }
    if(prev1==-1||prev2==-1)//判断str1/str2是否存在
        cout<<-1;
    else
        cout<<ret;
}

相关文章:

  • DC-6靶机详解
  • pfsense部署(特详细,小白零基础)
  • 钉钉(excel)能让表格中不是‘北京’的字符串自动加亮显示(方便查看)以及隔行填充严颜色是斑马色(方便查看)嘛
  • leetcode hot100普通动态规划/基础DP
  • C++之list类(超详细)
  • 审批工作流系统xFlow
  • 变量与输入输出
  • 【推荐系统全面整理】
  • Django项目之订单管理part3
  • Flink 1.17.2 版本用 java 读取 starrocks
  • Docker部署前端项目——Linux系统
  • 接口测试的原则、用例与流程
  • 本地部署Jina AI Reader:用Docker打造你的智能解析引擎
  • coding ability 展开第四幕(滑动指针——巩固篇)超详细!!!!
  • C51点灯学习
  • 一.ffmpeg打开麦克风,录制音频并重采样
  • k8s集群-kubeadm init
  • CSS3学习教程,从入门到精通,CSS3 选择器权重问题语法知识点及案例代码(5)
  • linux系统命令——权限
  • 破碎的誓言
  • “南昌航空一号”成功发射,赣江鄱阳湖有了专属卫星守护
  • 哪条线路客流最大?哪个站点早高峰人最多?上海地铁一季度客流报告出炉
  • “GoFun出行”订单时隔7年扣费后续:平台将退费,双方已和解
  • 3月中国减持189亿美元美债、持仓规模降至第三,英国升至第二
  • 商务部:中方敦促美方尽快停止232关税措施
  • 不是10点!乌克兰官员称尚未就俄乌谈判开始时间达成一致