• 20201213STL1总结


    STL1总结

    STL定义

    例题

    #10115. 栈练习1

    思路

    建立一个栈,根据输入的命令来进行模拟。最后如栈空,则输出"impossible!"

    代码

    /*
    ID: zhangbe5
    TASK: test
    LANG: C++
    */
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int n;
    int order,num;
    stack<int>s;
    int main(){
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++){
    		scanf("%d",&order);
    		if(order==1){
    			scanf("%d",&num);
    			s.push(num);
    		}else{
    			if(s.empty()){
    				printf("impossible!");
    				return 0;
    			}
    			s.pop();
    		}
    	}
    	if(s.empty()){
    		printf("impossible!");
    	}else{
    		printf("%d",s.top());
    	}
    	return 0;
    }
    

    #10062. 括弧匹配检验

    思路

    建立一个栈,把左括号压入栈中,如遇到右括号,则根据相应的左括号弹出栈顶。如括号不匹或无括号,则说明不匹配。如果遍历完整个字符串还有元素在栈内,则说明不匹配。

    代码

    /*
    ID: zhangbe5
    TASK: test
    LANG: C++
    */
    #include<bits/stdc++.h>
    using namespace std;
    string s;
    stack<char>q; 
    bool check(){
    	for(int i=0;i<s.size();i++){
    		if(s[i]=='('||s[i]=='['){//如为左括号则存入 
    			q.push(s[i]);
    		}else if(s[i]==')'){//如为右括号,开始判断 
    			if(q.empty()){//缺左半括号 
    				return false;
    			}
    			if(q.top()!='('){//无法配对 
    				return false;
    			}
    			q.pop();
    		}else if(s[i]==']'){//如为右括号,开始判断 
    			if(q.empty()){//缺左半括号 
    				return false;
    			}
    			if(q.top()!='['){//无法配对 
    				return false;
    			}
    			q.pop();
    		}
    	}
    	if(!q.empty())return false;
    	else return true;
    }
    int main(){
    	cin>>s;
    	if(check()){
    		printf("OK");
    	}else{
    		printf("Wrong");
    	}
    	return 0;
    }
    

    #10063. 车厢调度

    思路

    构造一个栈,将(n)个元素压入栈内,从而根据序列来判断是否存在这个序列。

    代码

    /*
    ID: zhangbe5
    TASK: test
    LANG: C++
    */
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int n,a[1010],b[1010],head;
    int main(){
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++){
    		scanf("%d",&a[i]);
    	}
    	for(int i=1,k=1;i<=n;++i){
    		while(k<=a[i]){
    			b[++head]=k;
    			++k;
    		}
    		if(b[head]==a[i]){
    			--head;
    		}else{
    			printf("NO");
    			return 0;
    		}
    	}
    	printf("YES");
    	return 0;
    }
    
    她透过我的血,看到了另一抹殷红
  • 相关阅读:
    【腾讯Bugly干货分享】移动互联网测试到质量的转变
    【腾讯Bugly干货分享】微信终端跨平台组件 mars 系列(一)
    如何用手机维护Mysql数据库
    企业内网信息安全实践-记ChinaUnix技术交流
    完成《Java编程入门》初稿
    Windows Server 2012下安装Hyper-V虚拟机
    MacOSX和Windows 8的完美融合
    Iphone5S 体验(视频+截图)
    PC上安装MAC X Lion
    正宗PC Unix实验环境
  • 原文地址:https://www.cnblogs.com/zhangbeini/p/14141204.html
Copyright © 2020-2023  润新知