解題報告:這題用SET可以很快解好,這裡練習不用SET的解題,首先要加快輸入輸出ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);。先宣告一個變數rs存第一個字串,然後用s存接下來的字串,每輸入s就計算有幾種字母,和rs比較,if(num1<num)小於rs則取代rs=s;,若一樣,直接字串比大小else if(num1==num&&s<rs),小於rs則取代rs=s;。以下提供C++原始碼:
#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,i,j,k,d=1,num,num1;
string rs,s;
cin>>n;
cin>>rs;
for(j=1;j<n;j++){
cin>>s;
if(d==1){
num=0;
int cnt[128]={0};
k=rs.length();
for ( i=0; i<k; i++) cnt[rs[i]] = 1;
for ( i=0; i<128; i++)
num += cnt[i];
d=0;
}
num1=0;
int cnt[128]={0};
k=s.length();
for ( i=0; i<k; i++) cnt[s[i]] = 1;
for ( i=0; i<128; i++)
num1 += cnt[i];
if(num1<num){
rs=s;
d=1;
}
else if(num1==num&&s<rs){
rs=s;
d=1;
}
}
cout<<rs<<'\n';
return 0;
}