CodeForce-1196D1-RGB Substring (easy version)

原題連接ios

題目大意:測試

給出一串由'R', 'G', 'B'組成的長度爲n的字符串,在裏面選出一個長度爲k的子串,要求在改變最少字符的狀況下同時也是"RGBRGBRGB…"的子串。spa

 

思路:
簡單版本測試數據範圍小,能夠直接暴力。code

有三種匹配狀況(分別以'R', 'G', 'B'開始),若是不匹配則改變次數+1,每次匹配完都更新一次最小值。blog

 

代碼:ci

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int q, n, k, mmin;
 6 char ori[3] = {'R', 'G', 'B'};
 7 char s[2002];
 8 
 9 int My_Min(int a, int b)
10 {
11     return a>b?b:a;
12 }
13 
14 int main()
15 {
16     cin >> q;
17 
18     for (int i = 1; i <= q; i++)
19     {
20         cin >> n >> k;
21         mmin = 20000;
22         for (int j = 1; j <= n; j++)
23         {
24             cin >> s[j];
25         }
26 
27         for (int j = 1; j <= n-k+1; j++)
28         {
29             int num[4] = {0};
30             for (int t = 0; t < k; t++)
31             {
32                 if (s[j+t] != ori[t%3])
33                 {
34                     num[1]++;
35                 }
36                 if (s[j+t] != ori[(t+1)%3])
37                 {
38                     num[2]++;
39                 }
40                 if (s[j+t] != ori[(t+2)%3])
41                 {
42                     num[3]++;
43                 }
44             }
45             mmin = My_Min(My_Min(mmin, num[1]), My_Min(num[2], num[3]));
46         }
47         cout << mmin << endl;
48     }
49     return 0;
50 }
相關文章
相關標籤/搜索