1 字符串a<<b()
int main() {

    string str;
    cin>>str;
    stack<char> s;
    for(int i=0;i<str.length();i++){
        if(str[i]==')'){
            while(s.top()!='(')
                s.pop();
            s.pop();
        } else
            s.push(str[i]);
    }
    string tmp;
    int cnt=0;
    while(!s.empty()){
        char temp=s.top();
        if(temp=='<')
            cnt++;
        else{
            if(cnt==0){
                tmp+=s.top();
            }
            cnt--;
            cnt=max(0,cnt);
        }
        s.pop();
    }

    string t;
    for(int i=tmp.length()-1;i>=0;i--){
        cout<<tmp[i];
    }

    cout<<endl;

    return 0;
}


2 迷宫题
#include<bits/stdc++.h>
using namespace std;

const int N=105;
int n;
int start_x=0;
int start_y=0;
char mat[N][N];
int flag[N][N];

struct P{
    int x;
    int y;
    int step;
    P(int _x,int _y,int _step){x=_x;y=_y;step=_step;}
};

int minLen=INT32_MAX;

void  bfs(){
    queue<P*> q;
    q.push(new P(start_x,start_y,0));
    while(!q.empty()){
        P *temp=q.front();
        q.pop();
        int x=temp->x;
        int y=temp->y;
        int step=temp->step;
        //cout<<x<<" "<<y<<endl;
        if(x==-1) x=n-1;
        if(y==-1) y=n-1;
        if(x==n)  x=0;
        if(y==n)  y=0;
        if(mat[x][y]=='E'){
            if(step<minLen)
                minLen=step;
        }
        if(flag[x][y]||mat[x][y]=='#')
            continue;
        flag[x][y]=1;
        q.push(new P(x,y+1,step+1));
        q.push(new P(x,y-1,step+1));
        q.push(new P(x+1,y,step+1));
        q.push(new P(x-1,y,step+1));
    }
}

int main() {

    cin>>n;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cin>>mat[i][j];
            if(mat[i][j]=='S'){
                start_x=i;
                start_y=j;
            }
        }
    }
    bfs();
    if(minLen==INT32_MAX)
        cout<<-1<<endl;
    else
        cout<<minLen<<endl;

    return 0;
}