題目傳送門
思路
本題就是讓你求 \(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;
}