题意:一段只包含'R,S,P'的字符串,希望你输出一段字符串使得无论起始位置 pos 在哪,你胜率最大的组合。
错误思路:分字符种类情况分析。(错误原因,只是找到单次比较最大值,但不是全局比较最大值)
正确思路:分字符数量情况分析。选最多的那个的对应字符。
#include <bits/stdc++.h> using namespace std; void solve(){ string s;cin >> s; int ok[5] = {0}; for(char i : s){ if(i == 'R'){ ok[1]++; }else if(i == 'S'){ ok[2]++; }else if(i == 'P'){ ok[3]++; } } int Max = max(ok[1],max(ok[2],ok[3])); char ans; if(Max == ok[1]){ ans = 'P'; }else if(Max == ok[2]){ ans = 'R'; }else if(Max == ok[3]){ ans = 'S'; } int len = s.size(); while(len--){ printf("%c",ans); } printf(" "); } int main() { ios::sync_with_stdio(false); int t ;cin >> t; while(t--) solve(); return 0; }