原題連接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 }