题解|railway

由于题目链接无法解析,我直接截图呈现这道题是一道英文题,而且很长,整体的题意我就不做翻译了。

他要求我们判断他给定的序列是否可行

看他的规则,是每来一节车,如果符合序列的车直接先行而不符合的车则先停留在车站且停留的车离开时需按照 “后进先出” 的顺序

很明显,我们应该用栈来解决这个问题。

整体代码如下:

#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<deque>
#include<cmath>
using namespace std;

void a(vector<int> &nums,int n);
int main(){
    int n,t0;
    vector<int> nums;
    cin>>n;		//先读取n

    while(n){	//通过判断n是否为0来判断是否继续
        for(int i=0;i<n;i++){
            cin>>t0;
            nums.push_back(t0);
            if(!nums[0]) break;	//如果第一个就读到了0,代表着要更迭块了
        }
        if(!nums[0]){
            cin>>n;		//进行块更迭
            nums.pop_back();	//要记得把nums清空
            if(n) cout<<"\n";
        }
        else a(nums,n);
    }
    
    return 0;
}

//核心函数
void a(vector<int> &nums,int n){
    stack<int> st;
    int j=0;
    for(int i=1;i<=n;i++){
        if(i==nums[j]) j++;	//符合序列,直接过,序列后推
        else st.push(i);	//不符合序列,先入栈,存进车站里
        while(!st.empty()&&st.top()==nums[j]){	//如果栈顶有符合的,依次出栈,离开车站
            st.pop();
            j++;
        }
    }
    if(st.empty()) cout<<"Yes"<<"\n";	//最后栈为空,即序列可行
    else cout<<"No"<<"\n";				//否则,为不可行
    nums.clear();
}

全部评论

相关推荐

ESLint&nbsp;是一个&nbsp;JavaScript&nbsp;代码静态分析工具,主要用于检查和规范代码风格,并发现潜在的问题和错误。它可以帮助开发团队建立一致的代码风格,提高代码质量,减少潜在的&nbsp;bug。ESLint&nbsp;的工作原理如下:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&amp;uuid=07d53be4cd034a4ab270d500feebcc8d配置:&nbsp;ESLint&nbsp;首先需要一个配置文件,通常是一个&nbsp;.eslintrc&nbsp;文件,用于指定代码规则和插件。配置文件可以是&nbsp;JSON&nbsp;格式或&nbsp;JavaScript&nbsp;模块,具体配置规则可以根据项目需求进行定义。解析器:&nbsp;ESLint&nbsp;使用解析器(Parser)将&nbsp;JavaScript&nbsp;代码转换成抽象语法树(AST)。常见的解析器有&nbsp;Espree、Babel&nbsp;Parser&nbsp;等,用于支持&nbsp;ES6+&nbsp;语法和&nbsp;JSX&nbsp;语法的解析。规则:&nbsp;ESLint&nbsp;根据配置文件中指定的规则,对&nbsp;AST&nbsp;进行遍历和检查。规则可以是内置的,也可以是通过插件扩展的。每个规则都定义了一条或多条代码规范,例如变量命名规范、缩进规范、禁用未使用的变量等。报告问题:&nbsp;当&nbsp;ESLint&nbsp;在代码中发现与规则不符的问题时,它会生成相应的警告或错误信息。开发者可以根据这些提示来进行代码修复或优化。插件和扩展:&nbsp;ESLint&nbsp;可以通过插件进行功能扩展。插件提供了额外的规则和检查器,用于检测特定类型的问题或优化代码。开发者可以根据项目需求选择合适的插件。总结起来,ESLint&nbsp;的作用是帮助开发团队统一代码风格,减少错误和潜在问题,从而提高代码质量。它通过静态分析&nbsp;JavaScript&nbsp;代码,根据预先定义的规则对代码进行检查,并提供相应的报告和提示。通过合理的配置和规则选择,可以将&nbsp;ESLint&nbsp;集成到开发工作流程中,确保代码的一致性和可维护性。
前端学习交流
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务