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;
    }
    
  • 相关阅读:
    黑马程序员_网络编程
    黑马程序员_ 异常
    黑马程序员_面向对象基础
    黑马程序员_循环语句的使用
    黑马程序员_面向对象深入2
    黑马程序员_ JAVA中的多线程
    黑马程序员_JAVA基础知识总结3
    OC-内存管理
    OC-核心语法(3)(分类、SEL、类本质)
    OC-核心语法2-构造方法
  • 原文地址:https://www.cnblogs.com/Idi0t-N3/p/14951330.html
Copyright © 2011-2022 走看看