蓝翔杯-翻硬币 贪心

思路:

找到两个串对应不相同的位置,可以知道,要是想变成一样的,得两个不同的位置同时往中间变换得到,花费是之间的距离

可以知道这样的话,相邻的两个位置得到一个花费;


#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e3 + 7;

char s[maxn], t[maxn];

int main() {
    scanf("%s", s);
    scanf("%s", t);
    int len = strlen(s);
    vector<int> vec;
    for(int i = 0; i < len; ++i) {
        if(s[i]!=t[i]) vec.push_back(i);
    }
    if(vec.size() % 2  == 1) cout << -1 << endl;
    else {
        int ans = 0;
        for(int i = 1; i < vec.size(); i += 2) {
            ans += (vec[i]-vec[i-1]);
        } cout << ans;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/xiang_6/article/details/80357112
今日推荐