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

【C++笔试强训】day02

牛牛的快递

image-20240725230757483

思路

起步价20,注意超出的费用要向上取整,最后再根据是否加急外付5元。

代码

#include <iostream>
#include <cmath>
using namespace std;int main()
{double a;char b;int sum = 20;cin >> a >> b;if (a > 1) sum += ceil(a - 1);if (b == 'y') sum += 5;cout << sum << endl;return 0;
}

最小花费爬楼梯

image-20240725231123296

DFS

爬楼梯问题是一个典型的具有重叠子问题的模型,自上而下地思考,将大问题转化为规模更小的子问题,对于任意第i阶,它可能是从i-1爬上来的,也可能是从i-2爬上来的,由于本题是要求总的最低花费,所以选择花费最小的那个。

边界:

  • i=0:只能爬一阶,花费是cost[0]。
  • i=1:同上,花费是cost[1]。
代码
#include <bits/stdc++.h>
using namespace std;
const int N = 100010;int cost[N];
int n;int main()
{cin >> n;for (int i = 0; i < n; i++) cin >> cost[i];vector<int> memo(n + 1, -1);function <int(int)> dfs = [&](int i) -> int{if (i == 0) return cost[0];if (i == 1) return cost[1];if (memo[i] != -1) return memo[i];return memo[i] = cost[i] + min(dfs(i - 1), dfs(i - 2));};cout << min(dfs(n - 1), dfs(n - 2));return 0;
}
  • 时间复杂度: O ( n ) O(n) O(n)

动态规划

将记忆化搜索翻译成递推。

代码
#include <bits/stdc++.h>
using namespace std;
const int N = 100010;int cost[N];
int n;int main()
{cin >> n;for (int i = 0; i < n; i++) cin >> cost[i];vector<int> dp(n);dp[0] = cost[0];dp[1] = cost[1];for (int i = 2; i < n; i++)dp[i] = cost[i] + min(dp[i - 1], dp[i - 2]);cout << min(dp[n - 1], dp[n - 2]);return 0;
}
  • 时间复杂度: O ( n ) O(n) O(n)

数组中两个字符串的最小距离

image-20240725231909866

思路

用数组统计并保存str1和str2在strs中出现的下标x和y。然后枚举所有可能的x和y的组合,得到一个最小差值。

代码

#include <bits/stdc++.h>
#include <vector>
using namespace std;const int N = 100010;
vector<int> pos[2];
string strs[N];
int len = INT_MAX;int main()
{int n;string s, t;cin >> n;cin >> s >> t;for (int i = 0; i < n; i++) {cin >> strs[i];if (strs[i] == s) pos[0].push_back(i);if (strs[i] == t) pos[1].push_back(i);}for (auto &x : pos[0])for (auto &y : pos[1])len = min(len, abs(x - y));if (len == INT_MAX) cout << -1 <<endl;else cout << len << endl;return 0;
}
  • 时间复杂度: O ( n 2 ) O(n^2) O(n2)

  • 空间复杂度: O ( n ) O(n) O(n)

优化

  • min_len 用于存储最小距离,初始化为 INT_MAX。
  • last_s 和 last_t 分别用于记录上一次出现字符串 s 和 t 的索引,初始化为 -1。

遍历字符串数组:

  • 对于每个字符串,如果它等于 s,更新 last_s,并计算与 last_t 之间的距离,更新 min_len。
  • 如果它等于 t,更新 last_t,并计算与 last_s 之间的距离,更新 min_len。
#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
string strs[N];int main()
{int n;string s, t;cin >> n;cin >> s >> t;for (int i = 0; i < n; i++) cin >> strs[i];int len = INT_MAX;int last_s = -1, last_t = -1;for (int i = 0; i < n; i++){if (strs[i] == s){last_s = i;if (last_t != -1) len = min(len, abs(last_s - last_t));}if (strs[i] == t){last_t = i;if (last_s != -1) len = min(len, abs(last_s - last_t));}}if (len == INT_MAX) cout << -1 << endl;else cout << len << endl;return 0;
}
  • 时间复杂度: O ( n ) O(n) O(n)

  • 空间复杂度: O ( 1 ) O(1) O(1)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Android SurfaceFlinger——纹理的绘制流程(二十八)
  • Activiti 6 兼容openGauss数据库bytes类型不匹配
  • Linux 某进程 CPU 高问题,用 Shell 脚本发现处理
  • go标准库---net/http服务端
  • 被工信部认可的开源软件治理解决方案
  • 高级及架构师高频面试题-应用型
  • 实战:MyBatis适配多种数据库:MySQL、Oracle、PostGresql等
  • AbutionGraph时序(流式)图数据库开发文档地址
  • C#知识|账号管理系统:实现修改管理员登录密码
  • js 优雅的实现模板方法设计模式
  • Hadoop、HDFS、MapReduce 大数据解决方案
  • 83. UE5 RPG 实现属性值的设置
  • 前端获取blob文件格式的两种格式
  • 【Qt】QLCDNumber和QProgressBar
  • 基于PSO粒子群优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
  • 《剑指offer》分解让复杂问题更简单
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • ➹使用webpack配置多页面应用(MPA)
  • CAP理论的例子讲解
  • co模块的前端实现
  • echarts的各种常用效果展示
  • Elasticsearch 参考指南(升级前重新索引)
  • Invalidate和postInvalidate的区别
  • JS函数式编程 数组部分风格 ES6版
  • Leetcode 27 Remove Element
  • MobX
  • python学习笔记-类对象的信息
  • win10下安装mysql5.7
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 说说动画卡顿的解决方案
  • 提醒我喝水chrome插件开发指南
  • 小程序开发之路(一)
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • Java性能优化之JVM GC(垃圾回收机制)
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​zookeeper集群配置与启动
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ###STL(标准模板库)
  • #{} 和 ${}区别
  • #100天计划# 2013年9月29日
  • #FPGA(基础知识)
  • (007)XHTML文档之标题——h1~h6
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (BFS)hdoj2377-Bus Pass
  • (python)数据结构---字典
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (论文阅读40-45)图像描述1
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (四) 虚拟摄像头vivi体验
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据