【題解】Codeforces 1321C. Remove Adjacent

【題目敘述】http://codeforces.com/contest/1321/problem/C

#include <iostream>
using namespace std;
 
int l, a[105], ans;
string s;
 
int main() {
    cin >> l;
    cin >> s;
    for (int i = 0; i < l; i++){
        a[i] = s[i]-'a';
    }
    for (int i = 25; i > 0; i--){
        for (int j = 0; j < l; j++){
            if (a[j] != i) continue;
            if (j != 0){
                int k = j-1;
                while (a[k] == -1 && k > 0) k--;
                if (a[k] == i-1){
                    ans++;
                    a[j] = -1;
                    continue;
                }
            }
            if (j != l-1){
                int k = j+1;
                while (a[k] == -1 && k < l-1) k++;
                if (a[k] == i-1){
                    int k = j-1;
                    while (k >= 0){
                        if (a[k] == a[j]){
                            ans++;
                            a[k] = -1;
                            k--;
                        }
                        else if (a[k] == -1) k--;
                        else break;
                    }
                    ans++;
                    a[j] = -1;
                }
            }
        }
    }
    cout << ans << "\n";
}
分享本文 Share with friends