HDOJ_杭电1234_开门人和关门人,又是字符串考察题目

又是一个水题。。。。


代码:

第一种解法(结构体的,未通过编译,在VC上可以正常运行)

/***** HDOJ-1234-开门人和关门人 ********/

/******** written by C_Shit_Hu ************/

////////////////结构体和字符串考察题目///////////////

/****************************************************************************/
/* 
Problem Description
每天第一个到机房的人要把门打开,最后一个离开的人要把门关好。现有一堆杂乱的机房签 
到、签离记录,请根据记录找出当天开门和关门的人。 

Input
测试输入的第一行给出记录的总天数N ( > 0 )。下面列出了N天的记录。 
每天的记录在第一行给出记录的条目数M ( > 0 ),下面是M行,每行的格式为 
证件号码 签到时间 签离时间 
其中时间按“小时:分钟:秒钟”(各占2位)给出,证件号码是长度不超过15的字符串。

Output
对每一天的记录输出1行,即当天开门和关门人的证件号码,中间用1空格分隔。 
注意:在裁判的标准测试输入中,所有记录保证完整,每个人的签到时间在签离时间之前, 
且没有多人同时签到或者签离的情况。 
*/
/****************************************************************************/


// 
#include<stdio.h>
#include<string.h>

typedef struct person
{
	char id[20], Start_time[20], End_time[20];
} person;    // 根据题目定义结构体类型

// 主函数
int main()
{
	int n,m,i,Max,Min;
	scanf("%d",&n);
	while(n--)
	{
		scanf("%d",&m);
		person s[100];     // 创建结构体实例
		for(i=0;i<m;i++)
			scanf("%s %s %s", s[i].id, s[i].Start_time, s[i].End_time);  // s输入测试数据

		Max=Min=0;
		for(i=0;i<m;i++)
		{
			if( strcmp(s[i].Start_time, s[Min].Start_time)<0 )
				Min=i;        
			if( strcmp(s[i].End_time, s[Max].End_time)>0 )
				Max=i;    // 又是字符串比较函数
		}
		printf("%s %s\n",s[Min].id,s[Max].id);      // 输出相应的结果
	}
	
	return 0;
}
/******************************************************/
/********************  心得体会  **********************/
/*

  水水更健康!!!
*/
/******************************************************/

第二种:(只用字符串数组,看似简单一点了。正常AC。)

代码:

#include <stdio.h>

int main()
{ 
    int n;
    scanf("%d",&n);
    while(n--)
    { 
		char a[1000][16];
		int i,m,s1,s2;
		scanf("%d",&m);

		s1=1; 
		s2=2;

		for(i=0;i<m*3;i++)     // 注意此处以及下面的3*m.
			scanf("%s",a[i]);  
		
		for(i=4;i<m*3;i+=3) 
			if(strcmp(a[i],a[1])<0)
			{
				strcpy(a[1],a[i]);                    
				s1=i;
			}

		for(i=5;i<m*3;i+=3)
			if(strcmp(a[i],a[2])>0)
			{
				strcpy(a[2],a[i]);
				s2=i;
			}
			
		printf("%s %s\n",a[s1-1],a[s2-2]);     
    }
    return 0;
}

学好字符串。c语言的一小半。。。


你可能感兴趣的:(HDOJ_杭电1234_开门人和关门人,又是字符串考察题目)