题解 P1781 【宇宙总统】

· · 题解

本初一蒟蒻的第一篇题解,好激动啊!!!

看了那么多大佬的题解,发现大多数都用sort。那我就来投机取巧、不要脸地发一篇不一样的题解。

原理:利用strcmp函数比较。

代码如下:

include<iostream>
include<cstring>
using namespace std; 
int main(){ 
int n,num;
char a[201],max[201]="";  
cin>>n;
for(int i=1;i<=n;i++){                 
    cin>>a;
    if(strcmp(max,a)<0){//当max < a时,返回负数。  
        strcpy(max,a);  
        num=i; 
    }
} 
cout<<num<<endl;  
puts(max);  
return 0;     
}

然而!

0分!!!

why?!

原来,strcmp函数是先比较第1个字符的值!

于是乎,加上了strlen判定。

AC满分代码如下:

include<iostream>
include<cstring>  
using namespace std; int main(){
int n,num;  
char a[201],max[201]="";
cin>>n;
for(int i=1;i<=n;i++){                      
    cin>>a;  
    if((strlen(max)<strlen(a))||(strlen(a)==strlen(max)&&strcmp(max,a)<0)){//若a的长度==max的长度,再用strcmp比较  
        strcpy(max,a);  
        num=i;  
    }  
}
cout<<num<<endl;  
puts(max);//输出
return 0; // 程序再见!
}

附上我的AC记录

管理员大大求过