C++笔试强训day7

目录

1.字符串中找出连续最长的数字串

2.岛屿数量

3.拼三角


1.字符串中找出连续最长的数字串

链接

我的思路很简洁,就是双指针遍历,然后不断更新左位置left和右位置right和长度len。

然后我写代码的时候代码思路没跟上原本思路,直接把所有的l,r,len都存起来,然后最后再遍历一遍存起来的数。

回想起才发现思路清晰了,但是代码写的一塌糊涂,其实可以直接在遍历的过程中不断更新l,r,len就可以了。

一开始代码(可以通过,但是繁琐):

#include <iostream>
#include <vector>
using namespace std;
vector<pair<int, int>> vp(256);
int main() {string s;cin >> s;int l = 0, r = 0;int k = 0;while (r < s.size()) {while (!(s[l] >= '0' && s[l] <= '9')) {l++;}r = l;while (s[r] >= '0' && s[r] <= '9') {r++;}vp[k++] = { l, r - 1 };l = r;}int len = 0;int keyi = 0;for (int i = 0; i < k; ++i) {if ((vp[i].second - vp[i].first + 1) > len) {len = vp[i].second - vp[i].first + 1;keyi = i;}}string t(s.begin() + vp[keyi].first, s.begin() + vp[keyi].second + 1);cout << t << endl;return 0;
}

改进代码(相当于我改进思路的再改进,因为可以不用不存储右指针,因为有了左和长度就可以判断右):

#include <iostream>
#include <string>
using namespace std;
int main()
{string s;cin >> s;int begin = -1, len = 0;for (int i = 0; i < s.size(); i++){if (s[i] >= '0' && s[i] <= '9'){int j = i;while (j < s.size() && s[j] >= '0' && s[j] <= '9') j++;if (j - i > len){begin = i;len = j - i;}i = j;}}if (begin == -1) cout << "" << endl;else cout << s.substr(begin, len) << endl;return 0;
}

这样不仅代码简洁,而且看起来也舒服。

begin初始化为负 -1 是为了判断有没有更新过

2.岛屿数量

链接

非常经典的一道DFS题目。

因为我见了很多DFS的题目返回值都为bool,因此我认为DFS必须以bool作返回值,结果导致浪费很多时间还得不到成果。

用不着返回值,直接深度遍历就可以求值:

class Solution {public:bool vis[220][220];int rowCount;int colCount;int dx[4] = {0,0,1,-1};int dy[4] = {1,-1,0,0};int solve(vector<vector<char>>& grid) {rowCount = grid.size();colCount = grid[0].size();// 用来记录岛屿数量int num_islands = 0;for (int row = 0; row < rowCount; row++) {for (int col = 0; col < colCount; col++) {// 如果当前位置是岛屿的一部分if (grid[row][col] == '1' && !vis[row][col]) {// 从当前位置开始执行DFS, 标记整个岛屿DFS(grid, row, col);// 岛屿数量增加num_islands++;}}}return num_islands;}void DFS(vector<vector<char>>& grid, int row, int col) {// 将当前位置标记为'0', 表示已访问vis[row][col] = true;// 检查并递归访问当前点的上下左右四个相邻点for(int i = 0; i < 4; ++i){int x = row + dx[i];int y = col + dy[i];if(x >= 0 && x < rowCount && y >= 0 && y < colCount && !vis[x][y] && grid[x][y] == '1')DFS(grid, x, y);}}
};

3.拼三角

链接

因为只有六根棍子,直接排序后分类讨论即可:

我没有经过思考,所有就把所有情况都遍历了,真的很傻的行为,虽然过了,但是很繁琐嘞,太多情况了。

自己代码:

#include <algorithm>
#include <iostream>
#include <vector>
#define int long long
using namespace std;
bool Check(int a, int b, int c)
{int min1 = min(a, min(b, c)); // 最小int max1 = max(a, max(b, c)); // 最大int mid = a + b + c - min1 - max1;if (min1 + mid <= max1)return false;return true;
}
vector<int> v(6);
void solve()
{for (int i = 0; i < 6; ++i){cin >> v[i];}sort(v.begin(), v.end());if (Check(v[0], v[1], v[2])){if (Check(v[3], v[4], v[5])){cout << "Yes" << endl;return;}}if (Check(v[1], v[2], v[3])){if (Check(v[0], v[4], v[5])){cout << "Yes" << endl;return;}}if (Check(v[2], v[3], v[4])){if (Check(v[0], v[1], v[5])){cout << "Yes" << endl;return;}}if (Check(v[0], v[2], v[5])){if (Check(v[1], v[3], v[4])){cout << "Yes" << endl;return;}}if (Check(v[0], v[2], v[4])){if (Check(v[1], v[3], v[5])){cout << "Yes" << endl;return;}}if (Check(v[0], v[2], v[3])){if (Check(v[1], v[4], v[5])){cout << "Yes" << endl;return;}}if (Check(v[0], v[1], v[3])){if (Check(v[2], v[4], v[5])){cout << "Yes" << endl;return;}}if (Check(v[0], v[1], v[4])){if (Check(v[2], v[3], v[5])){cout << "Yes" << endl;return;}}if (Check(v[0], v[3], v[4])){if (Check(v[1], v[2], v[5])){cout << "Yes" << endl;return;}}if (Check(v[0], v[3], v[5])){if (Check(v[1], v[2], v[4])){cout << "Yes" << endl;return;}}cout << "No" << endl;
}
signed main() {int t;cin >> t;while (t--)solve();
}

优化代码(只剩四种情况):

#include <iostream>
#include <algorithm>
using namespace std;
int t;
int arr[6];
int main()
{cin >> t;while (t--){for (int i = 0; i < 6; i++) cin >> arr[i];sort(arr, arr + 6);if (arr[0] + arr[1] > arr[2] && arr[3] + arr[4] > arr[5] ||arr[0] + arr[2] > arr[3] && arr[1] + arr[4] > arr[5] ||arr[0] + arr[3] > arr[4] && arr[1] + arr[2] > arr[5] ||arr[0] + arr[4] > arr[5] && arr[1] + arr[2] > arr[3]){cout << "Yes" << endl;}else cout << "No" << endl;}return 0;
}

因为是排序过后的,所以只需要遍历包含第一个数在内的四种情况即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/314509.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

局部多项式近似与 AMPM 算法

kappa3; %已在您的代码中定义% 定义窗口大小 windowSize (2*kappa1);% 初始化梯度估计值 [rows, cols] size(wrappedPhase); phi_y zeros(rows, cols); phi_x zeros(rows, cols);% 遍历每个窗口 for m 1kappa:rows-kappafor n 1kappa:cols-kappa% 提取局部窗口Z_mn wrap…

保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识

1.简介 有的小伙伴或者童鞋们可能会好奇地问&#xff0c;不是讲解和分享抓包工具了怎么这里开始讲解HTTP和HTTPS协议了。这是因为你对HTTP协议越了解&#xff0c;你就能越掌握Fiddler的使用方法&#xff0c;反过来你越使用Fiddler&#xff0c;就越能帮助你了解HTTP协议。 Fid…

hive启动beeline报错

问题一在zpark启动集群报错 出现上面的问题执行以下代码 chmod 777 /opt/apps/hadoop-3.2.1/logs 问题二启动beeline报错 执行 cd /opt/apps/hadoop-3.2.1 bin/hadoop dfsadmin -safemode leave 问题三执行查询语句报错 执行 set hive.exec.mode.local.autotrue;

【算法基础实验】图论-构建无向图

构建无向图 前提 JAVA实验环境 理论 无向图的数据结构为邻接表数组&#xff0c;每个数组中保存一个Bag抽象数据类型&#xff08;Bag类型需要专门讲解&#xff09; 实验数据 我们的实验数据是13个节点和13条边组成的无向图&#xff0c;由一个txt文件来保存&#xff0c;本…

【Java】全套云HIS源码包含EMR、LIS(多医院、卫生机构使用)

云HIS系统简介 SaaS模式Java版云HIS系统源码&#xff0c;在公立二甲医院应用三年&#xff0c;经过多年持续优化和打磨&#xff0c;系统运行稳定、功能齐全&#xff0c;界面布局合理、操作简便。 1、融合B/S版电子病历系统&#xff0c;支持电子病历四级&#xff0c;HIS与电子病…

【001_音频开发-基础篇-专业术语】

001_音频开发-基础篇-专业术语 文章目录 001_音频开发-基础篇-专业术语创作背景术语表常见音源HDMI相关声音系统立体声2.1 声音系统5.1 环绕声系统5.1.2 环绕声系统7.1 环绕声系统7.1.4 环绕声系统9.1.4 环绕声系统 音质等级定义QQ音乐网易云音乐 创作背景 学历代表过去、能力…

公钥密码学Public-Key Cryptography

公钥或非对称密码学的发展是整个密码学历史上最伟大的&#xff0c;也许是唯一真正的革命。The development of public-key, or asymmetric, cryptography is the greatest and perhaps the only true revolution in the entire history of cryptography. 公钥算法基于数学函数…

校车车载4G视频智能监控系统方案

一、项目背景 随着社会的快速发展&#xff0c;校车安全问题日益受到人们的关注。为了提高校车运营的安全性&#xff0c;保障学生的生命安全&#xff0c;我们提出了一套校车车载4G视频智能监控系统方案。该系统能够实时监控校车内部和外部环境&#xff0c;及时发现并处理潜在的…

大语言模型微调过程中的 RLHF 和 RLAIF 有什么区别?

目前想要深入挖掘大型语言模型&#xff08;LLM&#xff09;的全部潜力需要模型与我们人类的目标和偏好保持一致。从而出现了两种方法&#xff1a;来自人类反馈的人力强化学习&#xff08;RLHF&#xff09;和来自人工智能反馈的人工智能驱动的强化学习&#xff08;RLAIF&#xf…

25计算机考研院校数据分析 | 南京大学

南京大学&#xff08;Nanjing University&#xff09;&#xff0c;简称“南大”&#xff0c;是中华人民共和国教育部直属、中央直管副部级建制的全国重点大学&#xff0c;国家首批“双一流”、“211工程”、“985工程”重点建设高校&#xff0c;入选首批“珠峰计划”、“111计划…

【声网】实现web端与uniapp微信小程序端音视频互动

实现web端与uniapp微信小程序端音视频互动 利用声网实现音视频互动 开通声网服务 注册声网账号 进入Console 成功登录控制台后&#xff0c;按照以下步骤创建一个声网项目&#xff1a; 展开控制台左上角下拉框&#xff0c;点击创建项目按钮。 在弹出的对话框内&#xff0c;依…

20240422,C++文件操作

停电一天之后&#xff0c;今天还有什么理由不学习呜呜……还是没怎么学习 目录 一&#xff0c;文件操作 1.1 文本文件 1.1.1 写文件 1.1.2 读文件 1.2 二进制文件 1.2.1 写文件 1.2.2 读文件 一&#xff0c;文件操作 文件操作可以将数据持久化&#xff0c;对文件操…

Compose和Android View相互使用

文章目录 Compose和Android View相互使用在Compose中使用View概述简单控件复杂控件嵌入XML布局 在View中使用Compose概述在Activity中使用Compose在Fragment中使用Compose布局使用多个ComposeView 在布局中使用Compose 组合使用 Compose和Android View相互使用 在Compose中使用…

MATLAB的几种边缘检测算子(Sobel、Prewitt、Laplacian)

MATLAB的几种边缘检测算子(Sobel、Prewitt、Laplacian) clc;close all;clear all;warning off;%清除变量 rand(seed, 100); randn(seed, 100); format long g;% 读取图像 image imread(lena.png); % 转换为灰度图像 gray_image rgb2gray(image); % 转换为double类型以进行计算…

【视频异常检测】Open-Vocabulary Video Anomaly Detection 论文阅读

Open-Vocabulary Video Anomaly Detection 论文阅读 AbstractMethod3.1. Overall Framework3.2. Temporal Adapter Module3.3. Semantic Knowledge Injection Module3.4. Novel Anomaly Synthesis Module3.5. Objective Functions3.5.1 Training stage without pseudo anomaly …

滚动条详解:跨平台iOS、Android、小程序滚动条隐藏及自定义样式综合指南

滚动条是用户界面中的图形化组件&#xff0c;用于指示和控制内容区域的可滚动范围。当元素内容超出其视窗边界时&#xff0c;滚动条提供可视化线索&#xff0c;并允许用户通过鼠标滚轮、触屏滑动或直接拖动滑块来浏览未显示部分&#xff0c;实现内容的上下或左右滚动。它在保持…

(四)Servlet教程——Maven的安装与配置

1.在C盘根目录下新建一个Java文件夹,该文件夹用来放置以下步骤下载的Maven&#xff1b; 2. 下载Maven的来源有清华大学开源软件镜像站和Apache Maven的官网&#xff0c;由于清华大学开源软件镜像站上只能下载3.8.8版本以上的Maven&#xff0c;我们选择在Apache Maven的官网上下…

OpenWrt里面运行docker安装windows xp

stdout: ❯ Starting Windows for Docker v2.20... stdout: ❯ For support visit https://github.com/dockur/windows stdout: ❯ CPU: Intel Xeon CPU E3 1230 V2 stdout: Intel Xeon CPU E3 1230 V2 | RAM: 7/7 GB | DISK: 416 GB (ext4) | HOST: 5.15.34... stdout: stdou…

UE4网络图片加载库(带内存缓存和磁盘缓存)

UE4网络图片加载库,带内存缓存和磁盘缓存,支持自定义缓存大小,支持蓝图和C++代码调用 1、调用示例 2、对外暴露函数 3、源代码-网络模块 KeImageNet.h // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreM…

zabbix6.4告警配置(短信告警和邮件告警),脚本触发

目录 一、前提二、告警配置1.邮件告警脚本配置2.短信告警脚本配置3.zabbix添加报警媒介4.zabbix创建动作4.给用户添加报警媒介 一、前提 已经搭建好zabbix-server 在需要监控的mysql服务器上安装zabbix-agent2 上述安装步骤参考我的上篇文章&#xff1a;通过docker容器安装za…