b898 - 1. 畢氏定理
題目描述
題目要求讀取多組測試案例,每組案例包含三個字串 a、b 和 c。輸出這三個字串中長度最長的字串。如果有多個字串長度相同且最長,則輸出字典序最大的字串。
解題思路
程式碼首先讀取測試案例的數量 n。然後,在迴圈中讀取三個字串 a、b 和 c。程式碼比較這三個字串的長度,找出最長的字串並輸出。如果有多個字串長度相同,則比較它們的字典序,輸出字典序最大的字串。
複雜度分析
- 時間複雜度: O(n * m),其中 n 是測試案例的數量,m 是字串的最大長度。
- 空間複雜度: O(m),主要用於儲存字串。
程式碼
#include <iostream>
#include <string>
using namespace std;
int main(){
std::ios::sync_with_stdio(false);
cin.tie(NULL);
string a,b,c;
int n=0;
while(cin >> n){
while(n>0){
n--;
cin >> a >> b >> c;
if(a.length()>b.length()&&a.length()>c.length())
cout << a << endl;
else if(b.length()>a.length()&&b.length()>c.length())
cout << b << endl;
else if(c.length()>a.length()&&c.length()>b.length())
cout << c << endl;
else{
if(a.length()==b.length()&&b.length()==c.length()&&a.length()==c.length()){
for(int i=0;i<a.length();i++){
if(a[i]>c[i]&&a[i]>b[i]){
cout << a << endl;
break;
}
else if(b[i]>c[i]&&b[i]>a[i]){
cout << b << endl;
break;
}
else if(a[i]<c[i]&&c[i]>b[i]){
cout << c << endl;
break;
}
}
}
else{
if(a.length()==b.length()){
for(int i=0;i<a.length();i++){
if(a[i]>b[i]){
cout << a << endl;
break;
}
else if(a[i]<b[i]){
cout << b << endl;
break;
}
}
}
else if(b.length()==c.length()){
for(int i=0;i<b.length();i++){
if(b[i]>c[i]){
cout << b << endl;
break;
}
else if(b[i]<c[i]){
cout << c << endl;
break;
}
}
}
else if(a.length()==c.length()){
for(int i=0;i<a.length();i++){
if(a[i]>c[i]){
cout << a << endl;
break;
}
else if(a[i]<c[i]){
cout << c << endl;
break;
}
}
}
}
}
}
}
}