3 条题解

  • 2
    @ 2023-4-3 18:35:44

    C++

    Florance

    这道题折磨了蒟蒻我好久,换了三四次思路,20次WA才过。

    #include <bits/stdc++.h>
    using namespace std;
    
    char s[100];
    
    queue <int> A, B;
    
    int main(){
        for(int i = 0; i < 100; i++) { //写入
            cin >> s[i];
        }
        int n = strlen(s);
        for(int i = 0; i < n; i++) { //把A,B的位置存入A,B队列
            if(s[i] == 'A') A.push(i);
            else B.push(i);
        }
        while(!A.empty() && !B.empty()) {
            if(A.front() < B.front()) { //找靠前的A
                A.push(n + A.front()); //找到后加到队列后面,方便下次查找
            }
            else B.push(n + B.front()); //找B
            A.pop(); //用完就丢
            B.pop();
        }
        if(A.empty()) cout << "B";
        else cout << "A";
        return 0;
    }
    
    • @ 2024-3-1 10:04:22

      蹭个楼发个python翻译

      from collections import deque
      
      A, B = deque(), deque()
      s = list(input())
      n = len(s)
      
      for i in range(n):
          if s[i] == 'A': A.append(i)
          else: B.append(i)
      
      while len(A) and len(B):
          if (Afront := A[0]) < (Bfront := B[0]): A.append(n + Afront)
          else: B.append(n + Bfront)
          A.popleft(); B.popleft()
      
      if len(B): print("B")
      else: print("A")
      
  • 2
    @ 2023-3-27 20:44:05
    #include <bits/stdc++.h>
    using namespace std;
    string s;
    
    char l,u,m;
    
    int ta,tb;//A和B的ban人次数
    
    queue<char> q,qu;//队列
    
    bool f(char t)
    {
        qu=q;
        for (int i=0;i<q.size();i++){
            m=qu.front();qu.pop();
            if (m==t)return 1;
        }
        return 0;
    }//判断t是否在队列中
    signed main(){
        ios::sync_with_stdio(0); cin.tie(0);
        cin>>s;
        for (int i=0;i<=s.length()-1;i++)q.push(s[i]);
        while(f('A') and f('B')){//q队列不只有一队人
               l=q.front();//发言权来到l
               //判断l是A还是B
               if (l=='A'){
                   if (tb<=0){q.push(l);ta++;}//如果B没有ban人次数,把A加入下一轮
                   else tb--;//否则A被沉默,Bban人次数-1
                }     
               else {
                    if (ta<=0){q.push(l);tb++;}
                    else ta--;
                }
                q.pop();//移除队列
        }
        if (f('B'))cout<<'B';
        else cout<<"A";
    }
    
    • -5
      @ 2023-7-31 17:17:35

      朴实无华

      #include<bits/stdc++.h>
      
      using namespace std;
      
      char a[10000];
      
      int main()
      {
      
          string n;
          cin >>n;
          for(int i=0; i<n.length(); i++){
              a[i+1]=n[i];
          }
          for(int i=1; i<=n.length(); i++){
              int m=0;
              if(a[i]=='A'){
                  for(int j=1; j<=n.length(); j++){
                      if(a[j]=='B'){
                          a[j]='I';//改为I,移除此人。
                          m++;
                          break;
                      }
                  }
                  if(m==0){
                      cout<<"A";
                      break;
                  }
              }
              if(a[i]=='B'){
                  for(int j=1; j<=n.length(); j++){
                      if(a[j]=='A'){
                          a[j]='I';
                          m++;
                          break;
                      }
                  }
                  if(m==0){
                      cout<<"B";
                      break;
                  }
              }
              if(i==n.length()){
                  for(int j=1; j<=n.length(); j++){
                      if(a[j]!='I'){
                          cout<<a[j];
                          break;
                      }
                  }
              }
          }
      
      	return 0;
      }
      
      • 1

      信息

      ID
      817
      时间
      1000ms
      内存
      256MiB
      难度
      7
      标签
      递交数
      409
      已通过
      90
      上传者