P10244 String Minimization
题意
给你四个长度为 \(n\) 的字符串,分别是 \(abcd\)。
你可以选择一个 \(i\) 然后交换 \(a[i]\) 和 \(c[i]\),并交换 \(b[i]\) 和 \(d[i]\)。
求在 \(a\) 的字典序尽量小的前提下,\(b\) 字典序最小是什么。
思路
本题并不难。
只需要在 \(a[i]>c[i]\) 时,交换 \(a[i]\) 和 \(c[i]\),并交换 \(b[i]\) 和 \(d[i]\)。
当 \(a[i]=c[i]\) 时,如果 \(b[i]>d[i]\),交换。
否则不换。
另外,交换的过程可以用 swap 函数解决。
代码
#include <bits/stdc++.h>
using namespace std;
int n;
string a,b,c,d;
int main(){
cin>>n>>a>>b>>c>>d;
for(int i=0;i<n;i++){
if(a[i]>c[i]){
swap(b[i],d[i]);
swap(a[i],c[i]);
}else if(a[i]==c[i]){
if(b[i]>d[i]){
swap(b[i],d[i]);
swap(a[i],c[i]);
}
}
}
// cout<<a<<"\n";
cout<<b;
return 0;
}
标签:String,Minimization,int,题解,交换,P10244,swap
From: https://www.cnblogs.com/AUBSwords/p/18117692