PAT1006

这道题对我来说还是有些难度的,难度在于我对字符串处理的方法不熟悉,字符串的识别,切割,截取

在这道题里面我是使用string的find(要查找的字符,起始位置)和substr(起始位置,切割长度)方法,个人记法,切割长度就是要截下来的串的末尾位置-起始位置+1

同时,在获取输入时候使用cin.get(c)来搞掉换行符(或者其他你不想要的符号)

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;


int min_compare(vector<string> &in){
	vector<int> candidate;
	vector<int> time;
	for(int i=0;i!=in.size();++i){
		candidate.push_back(i);
	}
	while(true){
		time.clear();
		for(int i=0;i!=candidate.size();++i){
			int number=candidate[i];
			int posi=in[number].find(':',0);
			if(posi!=-1){
				string t=in[number].substr(0,posi);
				time.push_back((t[0]-'0')*10+(t[1]-'0'));
				in[number]=in[number].substr(posi+1,in[number].size()-posi-1);
			}
			else{
				string t=in[number].substr(0,in[number].size());
				time.push_back((t[0]-'0')*10+(t[1]-'0'));
			}
		}
		int min_time=*min_element(time.begin(),time.end());
		int count=0;
		for(int i=0;i!=time.size();++i){
			if(time[i]==min_time){
				candidate[count]=candidate[i];
				++count;
			}
		}
		if(count==1)
			return candidate[0];
	}
}

int max_compare(vector<string> &out){
	vector<int> candidate;
	vector<int> time;
	for(int i=0;i!=out.size();++i){
		candidate.push_back(i);
	}
	while(true){
		time.clear();
		for(int i=0;i!=candidate.size();++i){
			int number=candidate[i];
			int posi=out[number].find(':',0);
			if(posi!=-1){
				string t=out[number].substr(0,posi);
				time.push_back((t[0]-'0')*10+(t[1]-'0'));
				out[number]=out[number].substr(posi+1,out[number].size()-posi-1);
			}
			else{
				string t=out[number].substr(0,out[number].size());
				time.push_back((t[0]-'0')*10+(t[1]-'0'));
			}
		}
		int max_time=*max_element(time.begin(),time.end());
		int count=0;
		for(int i=0;i!=time.size();++i){
			if(time[i]==max_time){
				candidate[count]=candidate[i];
				++count;
			}
		}
		if(count==1)
			return candidate[0];
	}
}


int main(){
	vector<string> id;
	vector<string> in;
	vector<string> out;
	int num;
	cin>>num;
	//discard the line break
	char c;
	cin.get(c);
	for(int i=0;i!=num;i++){
		string line;
		getline(cin,line);
		string::size_type posi1=line.find(" ",0);
		id.push_back(line.substr(0,posi1));
		string::size_type posi2=line.find(" ",posi1+1);
		in.push_back(line.substr(posi1+1,posi2-posi1-1));
		out.push_back(line.substr(posi2+1,line.size()-posi2-1));	
	}
	int sign_in=min_compare(in);
	int sign_out=max_compare(out);
	cout<<id[sign_in]<<" "<<id[sign_out];
	
	return 0;
}

 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

/*
  自己做完PAT1006之后看网上其他人的做法,别人30行搞定,自己居然用了100行,不明觉菜 
  学习了别人的做法后决定再重写一遍
  之前总是习惯使用string来处理字符串操作,现在使用char数组做一下,熟悉一下原生字符数组的一些基本操作 
*/
#include<iostream>
#include<cstring>
using namespace std;

int main(){
    int num;
    cin>>num;
    char max_time[10]="00:00:00";
    char min_time[10]="23:59:59";
    char max_id[30]="";
    char min_id[30]="";
    char id[30],in[10],out[10];
    while(num--){
        cin>>id>>in>>out;
        if(strcmp(min_time,in)>0){
            strcpy(min_time,in);
            strcpy(min_id,id);
        }
        if(strcmp(out,max_time)>0){
            strcpy(max_time,out);
            strcpy(max_id,id);
        }
    }
    cout<<min_id<<" "<<max_id;
    
    return 0;
}

 

转载于:https://www.cnblogs.com/chuan-chuan/p/11424588.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值