题目大意
给两个字符串,轮流进行两个操作,求使两个字符串相等需要的最少次数
操作1:改变某个字符串的某个字符;操作2:翻转某个字符串
进行一次操作1,就必须进行一次操作2,反之亦然,当两个字符串相等时立即停止操作;
思路:
发现操作二作用于哪个字符串都一样,贪心,找出顺着比和倒着比 不同字符的个数,然后分别讨论,取最少次数
题目链接:Problem - C - Codeforces
void solve() {
int ans = 0, ans1 = 0;
cin >> n >> s >> p;
for(int i = 0; i < n; i ++ ) {
if(s[i] != p[i]) ans ++ ;
if(s[n - i - 1] != p[i]) ans1 ++ ;
}
if(ans & 1) ans = ans * 2 - 1;
else ans = ans * 2;
if(ans1 % 2 == 0) ans1 = max(2, ans1 * 2 - 1);
else ans1 = ans1 * 2;
cout << min(ans, ans1) << "\n";
}