#46330: AC程式想法 5ms


ytconch@gmail.com (神奇的海螺)


小弟分享一下寫法
這題轉的方式可以先取餘數拿到轉單圈的轉數
之後再回歸StrN陣列
使用map紀載字母次數
就這樣重複

#include <iostream>
#include <map>
#include <string>
using namespace std;
int main(){
    int n , strL , Change , scores{};
    cin >> n >> strL >> Change;
    string strN[n];
    for(int i = 0 ; i < n ; ++i)cin >> strN[i];
    for(int i = 0 ; i < Change ; ++i){
        for(int ia = 0 ; ia < n ; ++ia){
            int ro , roN = strL;
            string temp = strN[ia];
            cin >> ro;
            ro%=strL;
            int index = (strL-ro)%strL;
            while(roN > 0){
                if(index == strL)index = 0;
                strN[ia][strL-roN] = temp[index];
                ++index;
                --roN;
            }
        }
        for(int ia = 0 ; ia < strL ; ++ia){
            map<char,int> Sc;
            for(int ib = 0 ; ib < n ; ++ib){
                ++Sc[strN[ib][ia]];
            }
            int max{};
            for(auto i : Sc)if(i.second > max)max=i.second;
            scores += max;
        }
    }
    cout << scores;
}