P3742 umi的函式

自為風月馬前卒發表於2017-07-13

題目背景

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 }

 

相關文章