洛谷P10244 String Minimization 题解

题目传送门

思路

本题就是让你求 \(a\) 字典序最小时的 \(b\),毕竟他说在 \(a\) 的字典序尽量小的前提下。接下来就做这个判断:

  • 如果 \(a_i\) < \(c_i\),则 \(b_i\)\(d_i\)交换。
  • 如果 \(a_i\) < \(c_i\)\(b_i\) > \(d_i\),则 \(b_i\)\(d_i\)交换。
  • 其余情况不用交换。

注意这里只用输出 \(b\),所以只用把 \(d_i\) 赋值给 \(b_i\) 即可。

代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int len;
    string a,b,c,d;
    cin>>len;
    cin>>a>>b>>c>>d;
    for(int i=0;i<len;i++){
        if(a[i]>c[i]){
            b[i]=d[i];
        }else{
            if(a[i]==c[i]&&b[i]>d[i]){
                b[i]=d[i];
            }
        }
    }
    cout<<b;
    return 0;
}
posted @ 2024-12-07 20:06  zhouxi2022HZO  阅读(33)  评论(0)    收藏  举报