前言
写下此篇仅为 提供做题 更优 的思路
传送门 : https://atcoder.jp/contests/abc221/tasks/abc221_b
最后10分钟进的场 (分数什么的不重要了)
WA b7发 最后还没过 简直去世 (太菜了)
愿天堂没有分讨
虽然题目简单,(区域赛不会出) ,但是还是可以用在平时上分的
思路
题意:
给你两个字符串,仅给你一个 交换相邻字符的机会,问是否可以使a == b
不清楚为什么,上手就i直接分讨了,然后就WA一个样例疯狂WA
最后看了别人的提交,发现完全可以直接模拟
CODE(好的思路)
#include <bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{
string a,b;
cin>>a>>b;
int len = a.size();
if(a==b)
{
cout<<"Yes"<<endl;
return;
}
for(int i = 0 ;i<len-1;i++)
{
swap(a[i],a[i+1]);
if( a==b)
{
cout<<"Yes"<<endl;
return;
}
swap(a[i],a[i+1]);
}
cout<<"No"<<endl;
return ;
}
signed main()
{
ios::sync_with_stdio(false);
solve();
return 0;
}
CODE(失败的分讨)
#include <bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{
string a,b;
cin>>a>>b;
int len = a.size();
int res = 0 ;
if(a[len-2]==b[len-2])
{
if(a[len-1]!=b[len-1])
{
cout<<"No"<<endl;
return;
}
}
for(int i=0;i<len-1;i++)
{
if(a[i]!=b[i])
{
if(b[i+1]!=a[i+1])
res++;
else
{
cout<<"No"<<endl;
return;
}
}
}
if(res == 1||!res )
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
signed main()
{
ios::sync_with_stdio(false);
solve();
return 0;
}