CF Vicious Keyboard 構造水題
阿新 • • 發佈:2019-02-10
題目說 在給定字串中 只能改變一個字元的情況下 求最大的VK字元的數量
分析
為了防止出錯 這裡要注意 為了防止VK判斷的時候
不影響其他的判斷 對於一個VK 我們最好不要把他刪掉刪掉後有可能會增加新的VK
就直接用特定值把原來的VK覆蓋掉
然後對於剩下的可能 最多隻能增加一個VK
就是通過 目標條件判斷 計數就可以
#include<bits/stdc++.h>
using namespace std;
int main()
{
string l;
getline(cin,l);
int pos=0,c=0;
while(l.find("VK" ,0)!=string::npos){
pos = l.find("VK",pos);
l[pos]=32,l[pos+1]=32;
c++;
}
int v=0,k=0;
for(int i=0;i<l.length();i++){
if(l[i]=='V'&&(i+1)<l.length()&&l[i+1]!=32)v++;
else if(l[i]!=32&&(i+1)<l.length()&&l[i+1]=='K' )k++;//下標操作 注意判斷邊界條件
}
if(v||k)c++;
cout<<c<<endl;
return 0;
}