洛谷P10244 String Minimization 題解

zhouxi2022HZO發表於2024-12-07

題目傳送門

思路

本題就是讓你求 \(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;
}

相關文章