九度机试笔记20170903---2

来源:互联网 发布:matlab 未知数矩阵 编辑:程序博客网 时间:2024/05/30 22:44

学习《九度机试指南3》如下。
有一个遗留问题 题目1051:数字阶梯求和 等待解决,mark一下。


题目1153:括号匹配问题

#include <iostream>#include <stack>using namespace std;stack<int> S;char src[101];char dst[101];int main(){    int i;    while(cin.getline(src,101)){        for(i=0; src[i]!=0; i++){            if(src[i]=='('){               S.push(i);               dst[i]=' ';            }else if(src[i]==')'){                if(S.empty()){                    dst[i]='?';                }                else{                    dst[i]=' ';                    S.pop();                }            }            else                dst[i] = ' ';        }        dst[i]='\0';        while(!S.empty()){            dst[S.top()] = '$';            S.pop();        }        cout<<src<<endl;        cout<<dst<<endl;    }    return 0;}

注意:栈的使用,还有难点在于怎么找到不匹配的左括号的位置,可以定义一个结构体专门记录,也可以像这里一样向栈中存入字符串数组的下标,最后通过这个下标修改相应位置的字符。