題目背景
umi 找到了一個神祕的函式 f。
題目描述
這個函式接受兩個字串 s1,s2。這些字串只能由小寫字母組成,並且具有相同的長度。這個函式的輸出是另一個長度與 s1,s2 相同的字串 g。g 的第 i 個字元等於 s1 的第i 個字元和 s2 的第 i 個字元的最小值,簡單來說,g[i]=min(s1[i],s2[i])。
例如:f("ab","ba")= "aa", f("nzwzl","zizez")="niwel".
她現在有兩個相同長度的只有小寫字母的字串 x,y。找出任何一個滿足 f(x,z)=y 的
字串 z。如果找不到這樣的字串的話,請輸出-1。
輸入輸出格式
輸入格式:
第一行給出以下兩個字串的長度 n。
第二行給出一個字串 x。
第三行給出一個字串 y。
輸出格式:
第一行輸出一個字串,代表你找到的符合條件的字串。找不到的話,請輸出-1。
輸入輸出樣例
輸入樣例#1:
2 ab aa
輸出樣例#1:
ba
輸入樣例#2:
5 nzwzl niwel
輸出樣例#2:
xiyez
輸入樣例#3:
2 ab ba
輸出樣例#3:
-1
說明
對於 100%的資料,1<=n<=100。
暴力模擬,
其中有一些思維的細節,。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<algorithm> 6 #define lli long long int 7 using namespace std; 8 const int MAXN=101; 9 void read(int &n) 10 { 11 char c='+';int x=0;bool flag=0; 12 while(c<'0'||c>'9') 13 {c=getchar();if(c=='-')flag=1;} 14 while(c>='0'&&c<='9') 15 x=x*10+(c-48),c=getchar(); 16 flag==1?n=-x:n=x; 17 } 18 int n; 19 char a[MAXN],b[MAXN]; 20 int main() 21 { 22 read(n); 23 scanf("%s%s",a,b); 24 for(int i=0;i<n;i++) 25 if(a[i]<b[i]) 26 { 27 printf("-1"); 28 return 0; 29 } 30 for(int i=0;i<n;i++) 31 { 32 if(a[i]==b[i]) 33 cout<<a[i]; 34 else 35 cout<<b[i]; 36 } 37 return 0; 38 }