当前位置: 首页 > 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 对…...

[PWNME 2025] PWN 复现

这种比赛得0也不容易&#xff0c;前边暖声还是能作的。 GOT 指针前溢出&#xff0c;可以溢出到GOT表&#xff0c;然后把后门写上就行 Einstein 这个拿到WP也没复现成&#xff0c;最后自己改了一下。 int __cdecl handle() {int offset; // [rsp8h] [rbp-38h] BYREFunsigne…...

【笔记】记一次easyExcel中注解ExcelProperty映射字段赋值无效问题

背景 最近在开发一个导入excel文件解析数据并入库的功能&#xff0c;导入过程中出现一个BUG&#xff1a;后端映射实体字段pType没有被赋值&#xff0c;但是导入的excel源文件是有数据。 定位问题 经过debug源码发现最终创建对象并赋值使用的是net.sf.cglib.beans.BeanMap类中…...

肖恩的n次根

1.肖恩的n次根 - 蓝桥云课 问题描述 喜欢研究数学问题的肖恩注意到&#xff0c;在编程语言中通常内置函数只有开平方根和开立方根&#xff0c;但是肖思想知道开高次方根&#xff08;大于3次方称为高次方&#xff09;&#xff0c;应该怎么做。请你设计一个程序来帮帮肖恩。 输…...

《AI浪潮下的创新枢纽:火山引擎大模型应用实验室平台》

《AI浪潮下的创新枢纽&#xff1a;火山引擎大模型应用实验室平台》 引言&#xff1a;AI 时代的新引擎 在科技飞速发展的当下&#xff0c;人工智能&#xff08;AI&#xff09;已不再是遥不可及的概念&#xff0c;它如同一股汹涌的浪潮&#xff0c;席卷了我们生活的每一个角落。…...

生成式AI系列(二) LLM生成质量改善的方法——RAG检索增强生成

一、引子 我们需要通过一些手段来提升LLM生成内容质量&#xff0c;主要的有下面三项&#xff0c;本文将主要介绍RAG。 1. 提示工程&#xff08;Prompt Engineering&#xff09; 通过精心设计的提示&#xff08;Prompt&#xff09;来提升输出的质量 2. 模型微调&#xff08;Fi…...

Visual studio + Qt 项目配置管理

Visual studio Qt 项目配置管理 1.本机顺利安装 vs 和 Qt 软件 ​ 并且设置好Qt 的环境变量比如 E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\bin E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\lib E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\include //这里是你电脑上Qt的路径&#xff0c;每台电脑不一样…...

直装永久授权,最新专业版集成VB7

无论是学生、教师还是职场工作人员&#xff0c;办公软件在日常工作和学习中都是不可或缺的重要工具。在众多办公软件中&#xff0c;微软的Microsoft Office和金山软件的WPS Office最常用的选择。对于许多使用要求不高的小伙伴而言&#xff0c;WPS Office因其易用性和免费版本的…...

AI数字人| Fay开源项目、UE5数字人、本地大模型

数字人实践教程 本教程主要是讲如何在本地UE部署Fay数字人的开源框架。 最终效果可以与人进行自然语言的对话&#xff0c;花了大概10个h的时间到&#xff0c;踩了很多坑&#xff0c;同样想实现的朋友可以作为参考 参考文档&#xff1a;Fay 数字人开源框架 - 飞书云文档 官方的教…...

【网络编程】同步和异步、阻塞和非阻塞,I/O和网络I/O

十、基于I/O模型的网络开发 10.1 同步和异步 对于多个线程而言&#xff0c;同步、异步就是线程间的步调是否要一致、是否要协调&#xff1a;要协调线程 之间的执行时机就是线程同步&#xff0c;否则就是异步。 对于一个线程的请求调用来讲&#xff0c;同步和异步的区别是是否…...

第本章:go 切片

注意&#xff1a; 切片必须要初始化 才能使用 &#xff0c;切片是引用类型 a :[]int{} // 这上叫始化 此时并没有申请内存 // 如果要追加值的话&#xff1a; append ints : append(a, 1, 2, 3)a : make([]int,5) // 声明切片类型var a []string //声明一…...