您的位置:首页 > 其它

【HDOJ】1260 Tickets

2014-03-23 22:52 190 查看
水DP,不过这道题目的数据好像有问题。24时制可表示范围是0~23,12时制可表示范围应为1~12。也就是说24点(即0点)其实表示为12:00:00am,而中午12:00:00其实表示为12:00:00pm,而且从12:00:00~12:59:59都是12:xx:xx pm,而13点开始则应该表示为01:xx:xx pm。题目数据比较小,虽然貌似不考虑这个也可以ac。但是,我个人是按规范做的。

#include <stdio.h>

#define MAXNUM 2005

int times[MAXNUM];
int adjacent[MAXNUM];
int dp[MAXNUM];

int mymin(int a, int b) {
return a<b ? a:b;
}

void test(int *sec, int *min, int *hour) {
*sec = 0;
*min = 0;
*hour = 1;
}

int main() {
int case_n, n;
int i, sec, min, hour;
char str[3];

scanf("%d", &case_n);
str[2] = '\0';
while (case_n--) {
scanf("%d", &n);
for (i=1; i<=n; ++i)
scanf("%d", ×[i]);
for (i=1; i<n; ++i)
scanf("%d", &adjacent[i]);
dp[0] = 0;
dp[1] = times[1];
for (i=2; i<=n; ++i)
dp[i] = mymin(dp[i-1]+times[i], dp[i-2]+adjacent[i-1]);

sec = dp
;
hour = 8;
min = sec / 60; sec = sec % 60;
hour += min / 60; min = min%60;
//test(&sec, &min, &hour);
if (hour >= 24)
hour = hour%24;
if (hour>=12) {
if (hour > 12)
hour -= 12;
printf("%02d:%02d:%02d pm\n", hour, min, sec);
} else {
if (hour == 0)
hour = 12;
printf("%02d:%02d:%02d am\n", hour, min, sec);
}
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: