北理工计算机考研复试上机2014年真题

news/2025/3/31 2:06:14/

1、系统中有最近打开文件的记录,现用整数表示打开的文件名,且只

显示最近3个打开的文件,输出文件序列.

示例:

输入:1输出:1

输入:2输出:2, 1

输入:3

输出:3, 2, 1

输入:4

输出:4,3,2

输入:1

输出:1,4,3

输入:4

输出:1,4, 3

输入:3

输出:1,4,3

代码:

#include <bits/stdc++.h>using namespace std;
vector<int> ans;
int main()
{cout << "请输入:";int a;while (cin >> a) {int flag = false; // 当前输入不在最近访问列表for (int i = ans.size()-1, cnt = 0; i >= 0 && cnt < 3; i--, cnt++) {if (ans[i] == a) {flag = true;break;}}if (!flag) ans.push_back(a);for (int i = ans.size()-1, cnt = 0; i >= 0 && cnt < 3; i--, cnt++) {cout << ans[i];if (i != 0) cout << ',';}cout << endl;cout << "请输入:";}return 0;
}

2、在第1题基础上,稍作改动,显示最新打开的文件.

示例:

输入:1

输出:1

输入:2

输出:2,1

输入:3

输出:3,2,1

输入:4

输出:4,3,2

输入:1输出:1,4,3

输入:4

输出:4,1,3

输入:3

输出:3,4,1

代码:

#include <bits/stdc++.h>using namespace std;
vector<int> ans;
int main()
{cout << "请输入:";int a;while (cin >> a) {int flag = false; // 当前输入不在最近访问列表for (int i = ans.size()-1, cnt = 0; i >= 0 && cnt < 3; i--, cnt++) {if (ans[i] == a) {flag = true;break;}}if (!flag) ans.push_back(a);else if (flag) {  // 访问的数据a如果已在最近列表中,则.。。int idx = -1;for (int i = ans.size()-1, cnt = 0; i >= 0 && cnt < 3; i--, cnt++) {if (ans[i] == a){idx = i;break;} }    while (idx < ans.size()-1) {  // 这里就是将数据a交换到列表末尾int temp = ans[idx];ans[idx] = ans[idx+1];ans[idx+1] = temp;idx++;}}for (int i = ans.size()-1, cnt = 0; i >= 0 && cnt < 3; i--, cnt++) {cout << ans[i];if (i != 0) cout << ',';}cout << endl;cout << "请输入:";}return 0;
}

3、求广义表的深度(实际就是括号匹配),示例:输入(c,((d,e),f),h)

输出:3

提示:答案就是匹配过程中栈的最大深度

代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{string s;cin >> s;stack<char> st;int m = 0;for (int i = 0; i < s.size(); i++) {if (s[i] == '(') {st.push(s[i]); // 左括号进栈m = max(m, (int)st.size());  // 因为st.size()返回的是一个无符号整数,而max要求比较的两个数据类型一样,所以要将st.size()从无符号整数强转成有符号整数 更新栈的最大 大小}else if (s[i] == ')') st.pop();  // 遇到右括号 栈顶一定是左括号   括号一定是匹配的}cout << m << endl;}


http://www.ppmy.cn/news/1583755.html

相关文章

《Git:基本命令使用》

备份、代码还原、协同开发、追溯问题代码编写的人和时间 Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理很小到很大的项目版本管理。是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 Git工作流程图 clone&#xff08;克隆…

【学Rust写CAD】14线性插值函数(加入color.rs)

lerp 函数源码 /// 颜色线性插值/// t 取值范围 0..256&#xff0c;0 表示完全使用当前颜色(self)&#xff0c;256 表示完全使用目标颜色(end)#[inline]pub fn lerp(self, end: Color, t: u32) -> Color {let mask 0xff00ff;// 提取目标颜色的蓝色和红色分量let brb end.…

[计算机网络]网络I/O模型

欢迎来到啾啾的博客&#x1f431;。 这是一个致力于构建完善的Java程序员知识体系的博客&#x1f4da;&#xff0c;记录学习的点滴&#xff0c;分享工作的思考、实用的技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 欢迎评论交流&#xff0c;感谢您的阅读&#x1f604;。…

Go File容器化部署方案:本地快速搭建与无公网IP远程传输文件指南

文章目录 前言1. 安装Docker2. Go File使用演示3. 安装cpolar内网穿透4. 配置Go File公网地址5. 配置Go File固定公网地址 前言 在这个信息大爆炸的时代&#xff0c;谁还没遇到过这样的尴尬场面呢&#xff1f;当你正在办公室埋头苦干时&#xff0c;手机突然跳出一条紧急邮件&a…

TCP的长连接和短连接,以及它们分别适用于什么场合

TCP长连接与短连接详解 一、核心概念对比 特性长连接&#xff08;Persistent Connection&#xff09;短连接&#xff08;Short-lived Connection&#xff09;连接生命周期一次建立后长期保持&#xff0c;多次数据交互复用同一连接每次数据交互均需新建连接&#xff0c;完成后…

内网渗透-DLL和C语言加载木马

免杀进阶技术 1、DLL的定义与使用 DLL:Dynamic Link library,动态链接库&#xff0c;是一个无法自己运行&#xff0c;需要额外的命令或程序来对其接口进行调用&#xff08;类方法、函数&#xff09;。 (1)在DevCpp中创建一个DLL项目 (2)在dllmain.c中定义源代码函数接口 #i…

CLion配置问题解决

课程笔记 https://www.yuque.com/bigdata-caoyu/newcpp CLion 激活码不可用 https://blog.csdn.net/qq_41973721/article/details/142407716 主机名&#xff1a;localhost 端口号&#xff1a;80 不为以下设置代理&#xff1a;*.github.com,plugins.jetbrains.com 插件无法下…

OkHttp 的证书设置

在 Android 开发中&#xff0c;通过 OkHttp 自定义 SSLSocketFactory 和 X509TrustManager 可以有效增强 HTTPS 通信的安全性&#xff0c;防止中间人攻击&#xff08;如抓包工具 Charles/Fiddler 的拦截&#xff09;。以下是实现防抓包的关键技术方案&#xff1a; 一、Okhttp设…