一开始以为全部匹配第一次最多就可以,交了几次wa了才发现不是,因为这样第二次以后都会死的很惨。模拟了几下发现最优解法是直接取字符出现次数最多的那个。
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<string>
#include<math.h>
#include<algorithm>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
string s;
cin>>s;
int ans1=0, ans2=0, ans3=0;
for(int i=0; i<s.length(); i++){
if(s[i]=='R')
ans1++;
else if (s[i]=='S')
ans2++;
else if (s[i]=='P')
ans3++;
}
int mx=max(ans1, max(ans2, ans3));
if(mx==ans1)
for(int i=0; i<s.length(); i++)
cout<<"P";
else if (mx==ans2)
for(int i=0; i<s.length(); i++)
cout<<"R";
else if (mx==ans3)
for(int i=0; i<s.length(); i++)
cout<<"S";
cout<<endl;
}
return 0;
}