川のブログ

川の適当気ままなブログです。 

AOJ 0621 Russian Flag

こんにちは川です。

今回は、各列の’W’、’B’、’R’の数を保存し、

色の境目を全通り試した感じです。

 

ソースコード

 

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n,m;
    cin>>n>>m;
    int num[50][3]={};
    char str;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>str;
            if(str=='W')num[i][0]++;
            else if(str=='B')num[i][1]++;
            else num[i][2]++;
        }
    }
    int ans=25000;
    for(int i=0,notw=0;i<n-2;i++){
        notw+=num[i][1]+num[i][2];
        for(int j=i+1,notb=0;j<n-1;j++){
            notb+=num[j][0]+num[j][2];
            for(int k=j+1,notr=0;k<n;k++){
                notr+=num[k][0]+num[k][1];
                if(k==n-1)ans=min(ans,notw+notb+notr);
            }
        }
    }
    cout<<ans<<endl;
}