C
为了解决这个问题,我们需要明确小李的目标:通过最少的修改次数,移除所有标记为2(闪烁)的灯,同时保持标记为0(熄灭)或1(亮着)的灯的状态不变。
意思是保持(0或1)一种情况的所有灯不变:1.可以修改’1‘,但’0‘一定不可以修改;2.可以修改’0‘,但’1‘一定不可以修改;特殊情况’0‘和’1‘都不需要修改。
#include <iostream>
using namespace std;
void solve(){
int n;
cin >> n;
string s;
cin >> s;
int m1 = 0, m2 = 0;
for (int i = 0;i < n;i ++){
if(s[i] == '2'){
while(s[i] != '0'&&i < n){
i ++;
}
m1 ++;
}
}
for (int i = 0;i < n;i ++){
if(s[i] == '2'){
while(s[i] != '1'&&i < n){
i ++;
}
m2 ++;
}
}
if(m1 < m2) printf("%d\n", m1);
else printf("%d\n", m2);
}
int main() {
int t;
cin >> t;
while(t --){
solve();
}
return 0;
}