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

机试准备第12天

首先学习队列,队列有先进先出的特性。广度优先遍历需要基于队列实现,C++中的stl引入了队列的实现方式。队列支持push(),进入队尾,pop()出队,队头出队,front()获取队首元素,back()获取队尾元素,empty()判断队列是否为空。

第一题是约瑟夫环问题。

#include <stdio.h>
#include <queue>
using namespace std;
int main()
{queue<int> myqueue;int n,p,m;while(scanf("%d%d%d", &n,&p,&m)!=EOF){if(n ==0&&p==0&&m==0) break;//生成第一轮报数的队列//p, p+1,p+2,...,n,1,2,....int no = p;//孩子编号for(int i = 0; i < n;i++){myqueue.push(no);no++;if(no>n) no=1;}//开始报数int say = 1;while(1){int cur = myqueue.front();myqueue.pop();if(say == m){say = 1;if(myqueue.empty()){printf("%d\n", cur);break;}else{printf("%d,", cur);}}else {say++;myqueue.push(cur);}}}return 0;
}

第二题是排队打饭,分情况讨论即可,主要注意time是long long类型,使用int这题过不了。

#include <stdio.h>
#include <queue>
using namespace std;
struct Student{int a;//到达时刻int t;//打饭耗时int b;//最大等待时间
};
int main(){queue<Student> que;int n;scanf("%d", &n);for(int i = 0; i<n;i++){int ai,ti,bi;scanf("%d%d%d", &ai, &ti,&bi);Student s1;s1.a = ai;s1.b = bi;s1.t = ti;que.push(s1);//读入学生序列}long long time = 1;//记录当前时刻while(!que.empty()){Student stu = que.front();if(time>(stu.a+stu.b)){printf("-1 ");que.pop();}else if(time>=stu.a&&time<=(stu.a+stu.b)){printf("%d ", time);time += stu.t;que.pop();}else if(time<stu.a){time = stu.a;printf("%lld ", time);time += stu.t;que.pop();}}
}

下面学习栈,后进先出。深度优先遍历、表达式解析、递归会使用栈。stack支持push()入站,pop()出栈,top()获取栈顶元素,栈只支持获取栈顶元素,empty()获取栈是否为空。

第三题是编排字符串。栈的简单应用。

#include <stdio.h>
#include <stack>
#include <string>
using namespace std;
int main(){int n;scanf("%d", &n);stack <string> st1;for(int i = 0; i<n;i++){char mid[20];scanf("%s", mid);string str = mid;st1.push(str);stack<string> mystack;mystack = st1;int num = 1;while(!mystack.empty()){if(num>4) break;string str1 = mystack.top();printf("%d=%s ", num, str1.c_str());num++;mystack.pop();}printf("\n");}}

第四题是括号匹配,经典题目。

#include <stdio.h>
#include <stack>
#include <string>
using namespace std;
int main()
{char arr[20000];scanf("%s", arr);string str = arr;stack<char> mystack;mystack.push(str[0]);for(int i = 1;i < str.size();i++){if(str[i] == '<'||str[i] == '('||str[i] == '{'||str[i] == '['){mystack.push(str[i]);}else if(str[i]=='>'){if(mystack.empty()) {printf("no");return 0;}char res = mystack.top();if(res == '<') mystack.pop();else {printf("no");return 0;}}else if(str[i]==')'){if(mystack.empty()) {printf("no");return 0;}char res = mystack.top();if(res == '(') mystack.pop();else {printf("no");return 0;}}else if(str[i]=='}'){if(mystack.empty()) {printf("no");return 0;}char res = mystack.top();if(res == '{') mystack.pop();else {printf("no");return 0;}}else if(str[i]==']'){if(mystack.empty()) {printf("no");return 0;}char res = mystack.top();if(res == '[') mystack.pop();else {printf("no");return 0;}}}if(mystack.empty()==true) printf("yes");else printf("no");return 0;
}

第五题是堆栈的使用​​​​​​​,简单模拟。

#include <stdio.h>
#include <string>
#include <stack>
using namespace std;
int main() {int n;while (scanf("%d", &n) != EOF) {stack <int> mystack;for (int i = 0; i < n; i++) {char op[2];scanf("%s", op);string op2=op;if (op2 == "A") {if (mystack.empty()) printf("E\n");else printf("%d\n", mystack.top());} else if (op2 == "O") {if (!mystack.empty()) mystack.pop();} else if (op2 == "P") {int num;scanf("%d", &num);mystack.push(num);}}}return 0;
}

第六题是计算表达式,写了半天代码逻辑不对,气完了。建立运算符栈与运算数栈。从左向右扫描表达式,遇到操作数就加入操作数栈,扫描到运算符,若运算符栈为空,则直接压入运算符栈,若运算符栈不为空但当前运算符优先级大于栈顶运算符,也执行压栈操作。若运算符栈不为空但当前运算符优先级低于栈顶运算符,则弹出栈内的运算符,同时弹出操作数,直到当前运算符优先级再次大于栈顶运算符,压入栈中。

#include <stdio.h>
#include <string>
#include <stack>
#include <map>
using namespace std;
int main() {char str[1000] = {0};map<char, int> prio = {{'\0', 0}, {'+', 1}, {'-', 1}, {'*', 2}, {'/', 2}};while (scanf("%s", str) != EOF) {string numstr = "";stack <char> opstack;stack <double> numstack;for (int i = 0;; i++) {if (str[i] >= '0' && str[i] <= '9') {numstr.push_back(str[i]);} else {double num = stod(numstr);numstr = "";//数值提取numstack.push(num);//什么时候弹栈?栈非空&&新的op的优先级不高于栈顶的优先级//循环弹栈和计算while (!opstack.empty() && prio[str[i]] <= prio[opstack.top()]) {double right = numstack.top();numstack.pop();double left = numstack.top();numstack.pop();char curop = opstack.top();opstack.pop();if (curop == '+') numstack.push(left + right);else if (curop == '-') numstack.push(left - right);else if (curop == '*') numstack.push(left * right);else if (curop == '/') numstack.push(left / right);}//栈为空或者新运算符的优先级大于栈顶运算符if (str[i] == '\0') {printf("%d\n", (int)numstack.top());break;} else opstack.push(str[i]);}}}return 0;
}

第七题是模拟出入栈​​​​​​​。

#include <bits/stdc++.h>
using namespace std;int main() {string s;while (cin >> s) {stack<char> stk;int j = 0; //j用来扫描出栈序列s的for (char i = 'a'; i <= 'z'; ++ i) {stk.push(i); //每次按顺序入栈一个while (stk.size() && stk.top() == s[j]) {j++; //出栈序列向后走匹配下一个stk.pop(); //出栈}}if (stk.empty()) cout << "yes\n"; //栈空了,就是匹配的else cout << "no\n";}return 0;
}

相关文章:

机试准备第12天

首先学习队列&#xff0c;队列有先进先出的特性。广度优先遍历需要基于队列实现&#xff0c;C中的stl引入了队列的实现方式。队列支持push()&#xff0c;进入队尾&#xff0c;pop()出队&#xff0c;队头出队&#xff0c;front()获取队首元素&#xff0c;back()获取队尾元素&…...

计算机二级MS之PPT

声明&#xff1a;跟着大猫和小黑学习随便记下一些笔记供大家参考&#xff0c;二级考试之前将持续更新&#xff0c;希望大家二级都能轻轻松松过啦&#xff0c;过了二级的大神也可以在评论区留言给点建议&#xff0c;感谢大家&#xff01;&#xff01; 文章目录 考题难点1cm25px…...

伊藤积分(Ito Integral):随机世界中的积分魔法

伊藤积分&#xff08;Ito Integral&#xff09;&#xff1a;随机世界中的积分魔法 在研究随机微分方程&#xff08;SDE&#xff09;和布朗运动时&#xff0c;伊藤积分&#xff08;Ito Integral&#xff09;是一个绕不开的关键概念。它是处理布朗运动随机项 ( d W ( t ) dW(t)…...

【Deepseek应用】Zotero+Deepseek 阅读和分析文献(下)

【Deepseek应用】Deepseek R1 本地部署&#xff08;OllamaDockerOpenWebUI&#xff09; 【Deepseek应用】ZoteroDeepseek 阅读和分析文献&#xff08;上&#xff09; 【Deepseek应用】ZoteroDeepseek 阅读和分析文献&#xff08;下&#xff09; 使用邀请码 cXfb9wOT 注册 硅基流…...

人工智能与深度学习的应用案例:从技术原理到实践创新

第一章 引言 人工智能(AI)作为21世纪最具变革性的技术之一,正通过深度学习(Deep Learning)等核心技术推动各行业的智能化进程。从计算机视觉到自然语言处理,从医疗诊断到工业制造,深度学习通过模拟人脑神经网络的层次化学习机制,实现了对复杂数据的高效分析与决策。本…...

Docker和DockerCompose基础教程及安装教程

Docker的应用场景 Web 应用的自动化打包和发布。自动化测试和持续集成、发布。在服务型环境中部署和调整数据库或其他的后台应用。从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。 CentOS Docker 安装 使用官方安装脚本自动安装 安装命令…...

ArcGIS操作:13 生成最小外接矩阵

应用情景&#xff1a;筛选出屋面是否能放下12*60m的长方形&#xff0c;作为起降场候选点&#xff08;一个不规则的形状内&#xff0c;判断是否能放下指定长宽的长方形&#xff09; 1、面积初步筛选 Area ≥ 720 ㎡ 面积计算见 2、打开 ArcToolbox → Data Management Tools …...

Qt:事件

目录 处理事件 鼠标事件 键盘事件 定时器事件 窗口事件 虽然 Qt 是跨平台的 C 开发框架&#xff0c;Qt 的很多能力其实是操作系统提供的 只不过 Qt 封装了系统的 API 事件 前面学习过信号槽&#xff1a; 用户进行的各种操作&#xff0c;就可能会产生出信号&#xff0c;可以…...

python 程序一次启动有两个进程的问题(flask)

0. 背景 写了一个使用 flask 作为服务框架的程序&#xff0c;发现每次启动程序的时候&#xff0c;使用 ps 都能观察到两个 python 进程。 此外&#xff0c;这个程序占用了 GPU 资源&#xff0c;我发现有两个 python 进程&#xff0c;分别占用了完全相同的 GPU 显存 1. 原因 …...

ethtool的资料

ethtoolethtool(8) — Linux manual pageethtool(8) - Linux man pageUsing ethtool in LinuxLooking at your Linux system’s network interface with ethtoolHow to Change Speed & Duplex of Ethernet Card in Linux with ethtool CommandNVIDIA EthtoolRed Hat Enterp…...

SpringBoot过滤器(Filter)的使用:Filter接口、FilterRegistrationBean类配置、@WebFilter注释

1、过滤器(Filter)的介绍 Spring Boot 的过滤器用于对数据进行过滤处理。通过 Spring Boot 的过滤器,程序开发人员不仅可以对用户通过 URL 地址发送的请求进行过滤处理(例如:过滤一些错误的请求或者请求中的敏感词等),而且可以对服务器返回的数据进行过滤处理(例如:压…...

“此电脑”中删除WPS云盘方法(百度网盘通用)

&#x1f4e3;此方法适用于卸载WPS云盘后&#xff0c;WPS云盘图标依然在此电脑中显示的问题。 原理&#xff1a;通过注册来进行删除 步骤&#xff1a; WIN键R,打开运行窗口&#xff0c;输入regedit命令&#xff0c;来打开【注册表编辑器】&#xff1b; 从左侧&#xff0c;依…...

Manus AI:开启Agent元年的ChatGPT时刻(附赠资料)

1. Manus AI&#xff1a;全球首个通用Agent Manus AI 是全球首个通用人工智能代理&#xff0c;连接思想与行动&#xff0c;不仅思考&#xff0c;还能交付成果。Manus 擅长处理工作和生活中的各种任务&#xff0c;帮助用户完成一切。其核心理念是“less structure, more intell…...

ChromeDriver下载 最新版本 134.0.6998.35

平时为了下个驱动&#xff0c;到处找挺麻烦&#xff0c;收集了很多无偿分享给需要的人&#xff0c;仅供学习和交流。 ChromeDriver及浏览器134.0.6998.35 ChromeDriver及浏览器133.0.6943.141 ChromeDriver 102.0.5005.61 ChromeDriver 105.0.5195.102 ChromeDriver 108.0…...

Sass进阶之路:@forward 的可见性控制与变量覆盖

文章目录 前言1. 转发导入2. 添加前缀3. 控制可见性4. 转发时修改默认值总结 前言 在上一篇中&#xff0c;我们深入探讨了 use 的使用&#xff0c; 也介绍了 use 在使用深层模块中的变量时具有一定的缺点。所以在本文中&#xff0c;我们将深入解析 forward 的核心用法。 1. 转…...

MySQL作业一

一、创建数据库 #创建数据库 mysql> create database db_ck; Query OK, 1 row affected (0.01 sec)mysql> show databases like "db_%"; ----------------- | Database (db_%) | ----------------- | db_ck | | db_system | ----------------…...

虚拟机总结| 关于虚拟机的一些配置总结

前言 每次安装新的虚拟机都需要重新在网上搜索如何配置网络&#xff0c;我需要写一个自己的部署步骤&#xff0c;增加工作效率&#xff0c;不用每次配置的时候再去网上去翻找。 1.只需要联网功能记录(不固定IP) 1.1 修改ifcfg-ens33 vi etc/sysconfig/network-scripts/ifcfg…...

leetcode-sql数据库面试题冲刺(高频SQL五十题)

题目&#xff1a; 577.员工奖金 表&#xff1a;Employee -------------------- | Column Name | Type | -------------------- | empId | int | | name | varchar | | supervisor | int | | salary | int | -------------------- empId 是该表中具有唯一值的列。 该表的每一行…...

OpenManus:解锁测试工程师的效率密码——实践与应用指南

随着软件行业的快速发展&#xff0c;测试工程师面临的挑战也日益增多&#xff1a;如何在有限的时间内保证产品质量、如何高效生成测试数据、如何快速定位问题根源&#xff1f;这些问题直接影响到产品上线的节奏和用户体验。而在这一背景下&#xff0c;开源项目 OpenManus 的出现…...

Mybatis中的设计模式

1. 工厂模式&#xff08;Factory Pattern&#xff09; 概念&#xff1a;工厂模式是一种创建对象的设计模式&#xff0c;它将对象的创建和使用分离&#xff0c;通过一个工厂类来负责创建对象。MyBatis 中的应用&#xff1a;MyBatis 使用 SqlSessionFactory 来创建 SqlSession 对…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...