C. Remove Adjacent
链接
题意
给定一个长度小于100的字符串,只能删掉相邻的字母,问最多可以删几次。
思路
贪心。每次取最大的字母,暴力枚举,时间复杂度\(26*n\)
代码实现
#include<bits/stdc++.h> using namespace std; string s; int n; bool solve() { for(int j = 26; j >= 1; j--) for(int i = 0; i < s.size(); i++) { if(s[i] != 'a'+j) continue; if(i > 0) if(s[i-1]=='a'+j-1) { s.erase(i,1); return true; } if(i < s.size()-1) if(s[i+1]=='a'+j-1) { s.erase(i,1); return true; } } return false; } int main(void) { scanf("%d",&n); cin>>s; int ans=0; while(solve()) ans++; cout<<ans<<endl; }