HDU 开门人和关门人

不得不说C++的string类真的很好用,string类的字符串的比较跟strcmp的比较的标准差不多,这是网上的回答:


“比较字符串是按照字符串中的字符一个个比较的 只要一个字符不相同 那么就停止比较得出结果

而字符的比较则是比较其Unicode值 而非ascii码值 因为ASCII是不可能容纳下全世界这么多种语言这么多字符的”

而strcmp():

规则
当s1<s2时,返回为负数;
当s1=s2时,返回值= 0;
当s1>s2时,返回正数。
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇''为止。如:
"A"<"B" "a">"A" "computer">"compare"


#include <iostream>
#include <cstring>

using namespace std;

struct member{
   string name,timee;
   }minn,maxx;

int main(){
    string s,mi,ma;
    int T,n;
    cin>>T;
    while(T--){
        cin>>n;

        n--;
        cin>>s>>minn.timee>>maxx.timee;
        minn.name=maxx.name=s;
        while(n--){
            cin>>s>>mi>>ma;
            if(mi<minn.timee){
                minn.name=s;
                minn.timee=mi;}
            if(ma>maxx.timee){
                maxx.name=s;
                maxx.timee=ma;}
        }
        cout<<minn.name<<" "<<maxx.name<<endl;
            }
    }




如果不用字符串比较,那么就要把时间转换为整型

b[i] = ( (a[i].begin[0] - '0' ) *10 +( a[i].begin[1] -'0')) * 3600 +    ((a[i].begin[3] - '0') *10 + (a[i].begin[4] -'0')) *60 +( (a[i].begin[6] - '0')*10 + (a[i].begin[7] -'0')) ;

这样在struct数组结构体的基础上还要在定义数组成员,做起来就较麻烦了。(PS:还是要认真啊,开始在最大和最小初始化的时候写成minn.name=maxx.timee=s,因为大脑的思路是对的,所以因为笔误的错误花了很长时间找,敲的时候认真点)

原文地址:https://www.cnblogs.com/mingrigongchang/p/6246322.html