zoukankan      html  css  js  c++  java
  • POJ 1690

    一道水题,不过很多细节没注意结果拖了很久还一直WA,总之用堆来记录括号,整体上还是比较简单的,但是细节一定要想清楚。

    #include <iostream>
    #include <algorithm>
    #include <queue>
    #include <string>
    #include <vector>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cassert>
    #include <cmath>
    #include <string>
    #include <stack>
    #include <map>
    #include <set>
    #include <deque>
    using namespace std;
    
    const int maxl= (1<<8)+5;
    
    struct Node
    {
    	int sg;
    	char op;
    	int pos;
    	Node(int ssg= 0, char oop= 0, int ppos= 0) : sg(ssg), op(oop), pos(ppos) {}
    };
    char sen[maxl];
    bool drop[maxl];
    stack<Node> S;
    
    char SearchBack(int x)
    {
    	for (int i= x-1; i>= 0; --i){
    		if (' '!= sen[i]){
    			return sen[i];
    		}
    	}
    
    	return '^';
    }
    
    int main(int argc, char const *argv[])
    {
    	int kase= 0;
    	scanf("%d ", &kase);
    
    	while (kase--){
    		while (!S.empty()){
    			S.pop();
    		}
    		memset(drop, 0, sizeof(drop));
    		fgets(sen, maxl, stdin);
    		int lth= strlen(sen);
    		Node t;
    
    		for (int i= 0; i< lth; ++i){
    			if (' '== sen[i]){
    				drop[i]= 1;
    			}
    			else if ('('== sen[i]){
    				S.push(Node(1, SearchBack(i), i));
    			}
    			else if ('+'== sen[i] || '-'== sen[i]){
    				if (!S.empty()){
    					S.top().sg= 0;
    				}
    			}
    			else if (')'== sen[i]){
    				t= S.top();
    				if ('-'!= t.op || t.sg){
    					drop[t.pos]= drop[i]= 1;
    				}
    				S.pop();
    				if (!S.empty()){
    					S.top().sg &= t.sg;
    				}
    			}
    		}
    
    		for (int i= 0; i< lth; ++i){
    			if (!drop[i]){
    				putchar(sen[i]);
    			}
    		}
    	}
    
    	return 0;
    }
    
  • 相关阅读:
    定义模块与增加模块中的测试代码
    20150412自省
    Python中暂未解决的问题
    Node基础_文件系统
    Node基础_Buffer缓冲区
    Node基础_npm简介
    Node基础_模块化简介及详解
    Node基础_node简介
    Nosql_Mongoose简介及操作
    Nosql_MongoDB简单的查询练习
  • 原文地址:https://www.cnblogs.com/Idi0t-N3/p/14951330.html
Copyright © 2011-2022 走看看