[abc] B - typo 直接模拟

前言

写下此篇仅为 提供做题 更优 的思路
传送门 : 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;
}
上一篇:实现控件不响应鼠标点击事件


下一篇:CF862C Mahmoud and Ehab and the xor 题解