zoukankan      html  css  js  c++  java
  • 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;
    }
    
    她透过我的血,看到了另一抹殷红
  • 相关阅读:
    IIS配置和发布网站
    单点登录的理论原理(一)
    Tomcat乱码或异常
    浅谈Tomcat 、Apache、 Nginx的区别及优缺点
    KETTLE数据互交
    Centos7防火墙配置
    【linux】查看某个进程PID对应的文件句柄数量,查看某个进程当前使用的文件句柄数量
    this license XXXXXX has been cancelled
    Ubuntu16.04安装Redis
    redis的 rdb 和 aof 持久化的区别
  • 原文地址:https://www.cnblogs.com/zhangbeini/p/14141204.html
Copyright © 2011-2022 走看看