P9098 [PA2020] Zabawki 题解
题目梗概
输入两个字符串,如果经过若干次翻转后第一个字符串能变成第二个字符串则输出
思考
考虑字母的奇偶性问题。
选择一个区间
翻转这个区间,如
对于区间中的在
讨论奇偶性,
偶数加奇数减奇数等于偶数,所以
所以无论
所以现在就有思路了,分别记录两个字符串奇数下标的字母和偶数下标的字母的数量,比较两个字符串数组是否相同即可。
代码
#include <bits/stdc++.h>
using namespace std;
int ans1[26][2], ans2[26][2];//用桶的方式储存
int main() {
int n;
string a, b;
cin >> n >> a >> b;
for (int i = 0; i < a.size(); i++) {
ans1[a[i]-'a'][i & 1/*判断偶还是奇*/]++;//加入桶
ans2[b[i]-'a'][i & 1/*同上*/]++;//同上
}
for (int i = 0; i < 26; i++) {
if ((ans1[i][1] != ans2[i][1]) or (ans1[i][0] != ans2[i][0])) {//如果哪个地方不一样就输出NIE,然后结束循环
cout << "NIE";
return 0;
}
}
cout << "TAK";
return 0;
}
本文作者:BadBadBad__AK
本文链接:https://www.cnblogs.com/BadBadBad/p/18070498/P9098
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步