TopCoder每日一二题--2
2006-10-29 09:04
232 查看
问题:
给定一个时间格式 ""hh:mm XM, DAY n" =>小时:分钟 AM(PM) DAY 数字
初始时间 08:00 AM, DAY 1,
函数输入为vector<string>,每一个字符串都是按照固定格式的时间。
12:00 AM 表示的是00:00
12:00 PM表示的就是中午
计算没个时间于初始时间的差值(分钟),返回平均值(四舍五入)
问题的关键就如何把字符串里的时间分离出来
(http://blog.csdn.net/hxxiaopei/archive/2006/10/10/1328131.aspx),解决问题的方法很多,感觉对于这种格式固定但是不规则的字符串里提取时间,使用sscanf应该比较好用
sscanf(str.c_str(), "%d:%d %cM, DAY %d", &h,&m,&ch,&d);
比较有效
程序:
#include <stdio.h>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
class Iditarod
{
public:
int avgMinutes(vector<string> times)
{
int sum = 0;
int len=times.size();
for(int i = 0; i < len; i++)
{
string str = times[i];
int h,m,d;
char ch;
sscanf(str.c_str(),"%d:%d %cM, DAY %d",&h,&m,&ch,&d);
if((h==12)&&(ch=='A'))h=0;
if((ch=='P')&&(h!=12))
h=h+12;
cout<<h<<" "<<m<<" "<<d<<" "<<((d-1)*24+(h-8))*60+m<<endl;
sum+=((d-1)*24+(h-8))*60+m;
}
float t = (float)sum/len;
int avg = sum/len;
if((t-avg)>=0.5)
++avg;
return avg;
}
};
给定一个时间格式 ""hh:mm XM, DAY n" =>小时:分钟 AM(PM) DAY 数字
初始时间 08:00 AM, DAY 1,
函数输入为vector<string>,每一个字符串都是按照固定格式的时间。
12:00 AM 表示的是00:00
12:00 PM表示的就是中午
计算没个时间于初始时间的差值(分钟),返回平均值(四舍五入)
问题的关键就如何把字符串里的时间分离出来
(http://blog.csdn.net/hxxiaopei/archive/2006/10/10/1328131.aspx),解决问题的方法很多,感觉对于这种格式固定但是不规则的字符串里提取时间,使用sscanf应该比较好用
sscanf(str.c_str(), "%d:%d %cM, DAY %d", &h,&m,&ch,&d);
比较有效
程序:
#include <stdio.h>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
class Iditarod
{
public:
int avgMinutes(vector<string> times)
{
int sum = 0;
int len=times.size();
for(int i = 0; i < len; i++)
{
string str = times[i];
int h,m,d;
char ch;
sscanf(str.c_str(),"%d:%d %cM, DAY %d",&h,&m,&ch,&d);
if((h==12)&&(ch=='A'))h=0;
if((ch=='P')&&(h!=12))
h=h+12;
cout<<h<<" "<<m<<" "<<d<<" "<<((d-1)*24+(h-8))*60+m<<endl;
sum+=((d-1)*24+(h-8))*60+m;
}
float t = (float)sum/len;
int avg = sum/len;
if((t-avg)>=0.5)
++avg;
return avg;
}
};
相关文章推荐
- [topCoder-每日一二题]--[4]----动态规划的使用
- [topCoder-每日一二题]--[5]
- TopCoder每日一二题--1
- [topCoder-每日一二题]--[6]----动态规划
- [topCoder-每日一二题]--[3]
- 提高每日PV(访问量),UV(独立访客),IP(独立IP)
- 每日英语-20171115
- 每日碰头会 ~
- 每日一练26
- 每日英语(三)
- 剑指offer每日一刷-2017年11月15日
- 在.NET环境中实现每日构建(Daily Build)--NAnt篇
- 每日一练27
- Canvas globalAlpha透明度属性【每日一段代码16】
- Nswoj每日一题:Binary String Matching
- Canvas createRadialGradient 线性渐变【每日一段代码22】
- topcoder srm 490 div1
- Canvas translate()移动【每日一段代码26】
- linux每日一学
- 【每日面试题】输入一字符串,输出该字符串的所有组合