3 条题解
-
2
C++
这道题折磨了
蒟蒻
我好久,换了三四次思路,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; }
-
2
#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
朴实无华
#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
- 上传者