首页 > 代码库 > 题目1013:开门人和关门人----没有AC掉
题目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;
题目1013:开门人和关门人----没有AC掉
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。