北大ACM2501

来源:百度知道 编辑:UC知道 时间:2024/05/27 05:09:04
谁能提交这题啊!http://acm.pku.edu.cn/JudgeOnline/problem?id=2501
还有 帮我看看 我这个为什么提交失败说:WrongAnswer 郁闷啊 高分求解啊 #include<iostream>
#include<iomanip>
using namespace std;
int m1,m2,s1,s2,l=1,h2,h1,flag=0,n=1,flag2=0;
float v=0.0,v1=0.0;
void change(char a11[],char a22[])
{
if(strlen(a11)>7&&strlen(a22)>7)
{
h1=a22[0]-a11[0];
h2=a22[1]-a11[1];
m1=a22[3]-a11[3];
m2=a22[4]-a11[4];
s1=a22[6]-a11[6];
s2=a22[7]-a11[7];
}
}
void judge(char a11[],char a22[])
{
char a33[10];
strncpy(a33,a22,8);
if(strlen(a11)>7&&strlen(a33)>7){
if(strcmp(a11,a33)>0)
exit(0);}
}
void fun(char a11[])
{
int i;
v1=0.0;
if(strlen(a11)>7)
{for(i=strlen(a11)-1;i>8;i--)
{
if(i==strlen(a11)-1) l=1;

明明只有50分……

真的真的…… 不想读你的代码

累赘不说 还没有注释, 我给你说说我的程序吧…… 现写的, 一次ac

#include <iostream>
using namespace std;

int main()
{
char str[100];
int h, m, s, spd, pretime = 0, time;
double prespd = 0, len = 0;
while (gets(str) != NULL)
{
int t = sscanf(str, "%d:%d:%d %d", &h, &m, &s, &spd);
time = h*3600 + m*60 + s, len += (time - pretime) * prespd, pretime = time;
if (t == 4) prespd = spd / 3600.0;
else printf("%.2d:%.2d:%.2d %.2lf km\n", h, m, s, len);
}
}

首先是读入, 真的没有必要那么麻烦...
gets读入一行, 如果为NULL, 说明遇到文件结束了.
sscanf这个函数.. 你百度一下吧, 很好用的.返回值是 成功读入了几个数. 如果读入了4个数, 说明是00:00:01 100这种, 如果是3个,则是00:00:01这种查询.
其他的.. 貌似没有什么好说的了 看不懂问我吧

另外, 刚跑了下你的程序, 对于103:00:01这种数据 你的程序就挂了. 注意题目, 不一定非要在24小时内. 你的程序只认两位整数...

代码太长了 多给点分给你看看