嵌入式实习笔面试第三弹

文章提供了一段C++代码,该代码旨在解决美团笔试中的一道题目,即根据给定的入栈顺序in[]和出栈顺序out[]判断这样的出入栈操作是否合法。原始代码存在一些问题,经过修正后,代码能够正确检查栈的操作序列。最终版本的代码包含了一个主循环,用于处理多个测试用例。
摘要由CSDN通过智能技术生成

美团3.25笔试第一题,模拟栈

这道题我的思路一开始是清晰的,但到后面因为调试了太长时间,脑子已经乱了

我的源代码如下

#include <iostream>
#include <algorithm>
#include <stack>
#include <string>
#include <vector>
using namespace std;
int main()
{
	int h,x,y,z;
	int l = 0;
	cin >> h;
	stack<int> stackfirst;
	vector<int> num;
	vector<int> stackbaocun;
	vector<int> bijiao;
	for (int i = 0; i < h; i++)
	{
		cin >> x;
		for (int j = 0; j < x; j++)
		{
			cin >> y;
			cin >> z;
			stackfirst.push(y);
			stackbaocun.push_back(y);
			bijiao.push_back(z);	
		}
		while (!stackfirst.empty()) {
			int temp = stackfirst.top();
			cout << temp;
			stackfirst.pop();
		}
		if (stackbaocun[l++] == bijiao[l++])
		{
			printf("Yes");
		}
		else {
			printf("No");
		}
	}
	
	/*cout << stackfirst.size() << endl;
	cout << bijiao.size() << endl;
	
	while (!stackfirst.empty()) {
		int temp = stackfirst.top();
		cout << temp;
		stackfirst.pop();
	}

	return 0;
}

chatgpt居然都没有看出来这段代码的用途,所以确实错的很离谱

 之后我让chatgpt完善一下这段代码,主要完成功能为根据一个数字1到n的入栈顺序in[]和出栈顺序out[],问这个出入栈顺序是否合法

代码如下:

#include <iostream>
#include <stack>
#include <vector>
using namespace std;

int main()
{
	int n;
	cin >> n;
	vector<int> in(n);
	vector<int> out(n);
	for (int i = 0; i < n; i++) {
		cin >> in[i];
	}
	for (int i = 0; i < n; i++) {
		cin >> out[i];
	}

	stack<int> s;
	int i = 0, j = 0;
	while (i < n) {
		s.push(in[i++]);
		while (!s.empty() && s.top() == out[j]) {
			s.pop();
			j++;
		}
	}
	if (s.empty()) {
		cout << "Yes" << endl;
	}
	else {
		cout << "No" << endl;
	}

	return 0;
}

美团的需求需要加入组数,改动后代码如下:
 

#include <iostream>
#include <stack>
#include <vector>
using namespace std;

void solve()
{
	int n;
	cin >> n;
	vector<int> in(n);
	vector<int> out(n);
	for (int i = 0; i < n; i++) {
		cin >> in[i];
	}
	for (int i = 0; i < n; i++) {
		cin >> out[i];
	}

	stack<int> s;
	int i = 0, j = 0;
	while (i < n) {
		s.push(in[i++]);
		while (!s.empty() && s.top() == out[j]) {
			s.pop();
			j++;
		}
	}
	if (s.empty()) {
		cout << "Yes" << endl;
	}
	else {
		cout << "No" << endl;
	}
}
int main()
{
	int l;
	cin >> l;
	
	for (int i = 0; i < l; i++) {
		solve();
	}

	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 嵌入式硬件是指在其他系统中嵌入的电子或计算机系统。它们通常应用于各种设备中,如家电、汽车和医疗设备等。嵌入式硬件主要由处理器、内存、输入输出接口和其他外设组成。 在面试资料PDF中,有关嵌入式硬件的重要概念和知识可能会被包含。这些知识包括以下几个方面: 1. 处理器架构:嵌入式硬件通常采用微控制器或单片机。而ARM、AVR、PIC等是常见的嵌入式处理器架构。 2. 存储器:包括RAM和ROM。RAM用于存储程序和数据,ROM通常用于存储固件或引导程序。 3. 输入输出接口:用于与外部设备的通信,如串口、并口、USB接口等。同时,还应了解ADC、DAC等模数转换接口的工作原理。 4. 中断和时钟:中断是处理嵌入式系统中的异步事件的重要机制。时钟是系统同步操作的基础。 5. 总线和总线协议:总线用于连接处理器、内存和外设,而总线协议决定了数据传输的规则。 6. 电源电路和电源管理:了解嵌入式硬件的电源设计和管理,能够有效延长电池寿命。 7. PCB设计和布线:了解如何设计电路板和进行布线,以及正确排布元器件和信号走线的方法。 此外,在嵌入式硬件面试资料PDF中,也可能包括一些相关的实际案例、技术要点和应用场景的概述。这样的资料有助于面试者综合掌握嵌入式硬件的基本知识和应用能力,从而更好地应对面试。 ### 回答2: 嵌入式硬件是指将计算机系统嵌入到特定的设备或系统中,用于控制、处理和管理设备的各种功能。嵌入式硬件在日常生活中无处不在,如智能手机、家用电器、汽车等都使用了嵌入式硬件技术。 一份嵌入式硬件面试资料PDF对于应聘者来说是一份非常重要的资料。这份资料通常包含了面试考察的主要内容和重点,能够帮助应聘者更好地了解并准备面试。 这份PDF资料一般会包括以下几个方面的内容: 1. 基础知识:嵌入式硬件的基本概念、原理和工作方式等。包括计算机结构、微处理器、存储器、输入输出接口、总线等方面的基础知识。 2. 嵌入式系统设计:介绍嵌入式系统的设计流程和方法,包括需求分析、硬件设计、软件设计、集成测试等。还会介绍一些常用的嵌入式系统设计工具和开发平台。 3. 嵌入式处理器:常见的嵌入式处理器的特点、分类和应用。如ARM架构、MIPS架构等。还会介绍一些常用的嵌入式处理器的编程方法和特殊指令集。 4. 通信接口和总线:常用的嵌入式通信接口和总线的特点和应用。如UART、SPI、I2C、CAN等。还会介绍一些常见接口和总线的相关知识和应用案例。 5. 硬件调试和测试:嵌入式硬件的调试和测试方法和技巧。重点介绍一些常见的硬件故障排除技术和工具。 这份资料将会针对嵌入式硬件相关的基础知识和应用进行详细的解析和讲解,对于应聘者来说将会提供很大的帮助。在准备面试时,应聘者可以通过学习和掌握这份资料中的知识,提高自己的面试水平和竞争力。 ### 回答3: "嵌入式硬件面试资料pdf"是一种提供嵌入式硬件面试资料的电子文档格式。在这份pdf资料中,通常会包含嵌入式硬件相关的面试问题和答案。 这份资料的目的是帮助嵌入式硬件工程师应对面试,提供了一些常见的问题和参考答案。通常,这些问题围绕嵌入式系统设计、硬件电路、微处理器体系结构和接口等方面展开。此外,还可能包含一些项目经验和实践案例,以帮助面试者更好地展示自己的技能和能力。 在准备面试时,应聘者可以使用这份pdf资料作为参考,针对其中的问题进行思考和准备。通过对每个问题的解答思考,可以帮助应聘者巩固和扩展自己的嵌入式硬件知识,提高应对面试的能力。同时,这份资料也可以帮助应聘者更好地了解面试官对嵌入式硬件人才的期望和要求。 然而,这份资料只是一个参考工具,应聘者在准备面试时不仅要注意掌握其中的问题和答案,更重要的是理解其中的概念和原理,并能够用自己的语言和经验进行回答。面试官更看重面试者的理解能力和解决问题的思路,而不仅仅是机械地记住答案。 总而言之,"嵌入式硬件面试资料pdf"是一份提供嵌入式硬件面试资料的电子文档,可以作为面试准备的参考工具。通过对其中的问题和答案进行准备和思考,可以提高对嵌入式硬件知识的理解和应用能力。然而,面试者仍需重点关注理解能力和解决问题的思路,而不只是死记硬背答案。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值