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; }
点赞 1

相关推荐

点赞 评论 收藏
分享
牛客网
牛客企业服务