题目1013:开门人和关门人----没有AC掉

首先,承认这道没有太大的难度,但是有好多值得学习的地方:

我的WA:正确的结果,但是runtime error 的问题;

#include<stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
	int N,M;
	scanf("%d",&N);
	 if (N==0) return 0;
	while(N--)
	{
		scanf("%d",&M);
		char num[15],tem_num1[15],tem_num2[15];
		int h1,m1,s1,h2,m2,s2;
		int tem=0,tem1=0,tem2=0;
		for (int i=0;i<M;i++)
		{
		    scanf("%s %d:%d:%d",&num,&h1,&m1,&s1); 值得学习的输入方法
			int tem=h1*3600+m1*60+s1;
			if (tem1>=tem)
			{
			    tem1=tem;strcpy(tem_num1,num);
			}

			scanf("%d:%d:%d",&h2,&m2,&s2);
			int tem1=h2*3600+m2*60+s2;
			if (tem2<=tem1)
			{
				tem2=tem1;strcpy(tem_num2,num);
			}
		}
		printf("%s %s\n",tem_num1,tem_num2);
	}
	return 0;
}

  

改了很多次,还是WA,只好借鉴大神的了:http://blog.csdn.net/sjf0115/article/details/7701901

思路是一样的,就是用的数组;

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

int main()
{
	int N,M;
	//输入重定向,输入数据将从in.txt文件中读取
	//freopen("C:\\Users\\SJF\\Desktop\\in.txt","r",stdin);
    while(scanf("%d",&N)!=EOF)
    {
		int i,j;
		int in = 0,out = 0;
		int hour,minute,second,inTime[100],outTime[100];
		char ID[100][100];
		for(i = 0;i<N;i++){
			scanf("%d",&M);
			for(j = 0;j<M;j++){
				scanf("%s %d:%d:%d",&ID[j],&hour,&minute,&second);
				inTime[j] = hour*3600 + minute*60 + second;
				if(inTime[j] < inTime[in]){
					in = j;
				}
				scanf("%d:%d:%d",&hour,&minute,&second);
				outTime[j] = hour*3600 + minute*60 + second;
				if(outTime[j] > outTime[out]){
					out = j;
				}
			}
			printf("%s %s\n",ID[in],ID[out]);
		}
    }
    return 0;
}

还有一个c++的简洁的版本:http://www.cnblogs.com/simplelifestyle/p/3761882.html

值得学习::

#include<iostream>
#include<string>
using namespace std;
int main()
{
    int n;
    cin>>n;
    for(int j=0;j<n;j++)
    {
        int count=0;
        cin>>count;
        string str[10000][3]={""};
        int min=0,max=0;
        cin>>str[0][0]>>str[0][1]>>str[0][2];
        for(int i=1;i<count;i++)
        {
            cin>>str[i][0]>>str[i][1]>>str[i][2];
            if(str[i][1].compare(str[min][1])<0)min=i;
            if(str[i][2].compare(str[max][2])>0)max=i;
        }
        cout<<str[min][0]<<‘ ‘<<str[max][0]<<endl;
    }
    return 0;

  

时间: 2024-10-05 10:44:11

题目1013:开门人和关门人----没有AC掉的相关文章

HDU1234 开门人和关门人(解法二)

问题链接:HDU1234 开门人和关门人. 之前所做的程序质量不高,所以重做该题的题解.上次使用了结构数组和排序,完全没有必要,一边读入数据,一边处理就可以解决问题.参见:HDU1234 开门人和关门人(旧版本). 程序中时间转换为整数(秒单位),以便比较. AC通过的C语言程序如下: /* HDU1234 开门人和关门人 */ #include <stdio.h> #include <string.h> int main() { int n, m; int h, mi, s; c

HDUOJ----1234 开门人和关门人(浙江大学考研题)

开门人和关门人 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10231    Accepted Submission(s): 5235 Problem Description 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现有一堆杂乱的机房签 到.签离记录,请根据记录找出当天开门和关门的人. Input 测试输入的第一行

hdu 1234 开门人和关门人(简单题)

开门人和关门人 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10658    Accepted Submission(s): 5434 Problem Description 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现有一堆杂乱的机房签 到.签离记录,请根据记录找出当天开门和关门的人. Input 测试输入的第一行

题目1013:开门人和关门人(结构体自定义cmp排序)

题目链接:http://ac.jobdu.com/problem.php?pid=1013 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: // // 1013 开门人和关门人.cpp // Jobdu // // Created by PengFei_Zheng on 28/04/2017. // Copyright © 2017 PengFei_Zheng. All rights reserved. // #include <st

HDU 1234 (浙大计算机研究生复试上机考试-2005年) 开门人和关门人 (水)

开门人和关门人 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 11133    Accepted Submission(s): 5667 Problem Description 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现有一堆杂乱的机房签 到.签离记录,请根据记录找出当天开门和关门的人. Input 测试输入的第一

开门人和关门人(杭电1234)

开门人和关门人 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 1   Accepted Submission(s) : 1 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现

HDU1234_开门人和关门人【结构体排序】【水题】

开门人和关门人 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 11012    Accepted Submission(s): 5612 Problem Description 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现有一堆杂乱的机房签 到.签离记录,请根据记录找出当天开门和关门的人. Input 测试输入的第一

hdu1234 开门人和关门人 (等价转换)

开门人和关门人 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 12319    Accepted Submission(s): 6237 Problem Description 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现有一堆杂乱的机房签 到.签离记录,请根据记录找出当天开门和关门的人. Input 测试输入的第一

开门人和关门人(结构体+sort)

每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现有一堆杂乱的机房签 到.签离记录,请根据记录找出当天开门和关门的人. Input 测试输入的第一行给出记录的总天数N ( > 0 ).下面列出了N天的记录. 每天的记录在第一行给出记录的条目数M ( > 0 ),下面是M行,每行的格式为 证件号码 签到时间 签离时间 其中时间按“小时:分钟:秒钟”(各占2位)给出,证件号码是长度不超过15的字符串. Output 对每一天的记录输出1行,即当天开门和关门人的证件号码,中间用1空格分隔