栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 2534 Time Machine

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 2534 Time Machine

#include <cstdio>const int MonthDay[2][13] = {    {-1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},    {-1, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};const int Size = 365243;int Move[Size];int dp[Size];int queue[Size];inline bool LeapYear(int y){    return y % 4 == 0 && (y % 100 != 0 || y % 400 == 0);}int DateToInt(int y, int m, int d){    int ret = d - 1;    if(LeapYear(y))        for (int i = 1; i < m; i++) ret += MonthDay[1][i];    else        for (int i = 1; i < m; i++) ret += MonthDay[0][i];    y -= 2000;    ret += y * 365;    if(y > 0) {        --y;        ret += y / 4 - y / 100 + y / 400 + 1;    }    return ret;}int main(void){    int date, leap, ij;    date = 0;    for (int i = 2000; i < 3000; i++) {        leap = LeapYear(i);        for (int j = 1; j <= 12; j++) { ij = i + j; for (int k = 1; k <= MonthDay[leap][j]; k++)     Move[date++] = ij + k;        }    }    int y, m, d, f, t;    while(scanf("%d-%d-%d", &y, &m, &d) != EOF) {        for (int i = 0; i < Size; i++) dp[i] = -1;        queue[f = 0] = DateToInt(y, m, d);        t = 1;        scanf("%d-%d-%d", &y, &m, &d);        y = DateToInt(y, m, d);        dp[queue[0]] = 0;        while(f < t) { d = queue[f] + 1; if(d >= Size)     d -= Size; if(dp[d] == -1) {     dp[d] = dp[queue[f]] + 1;     queue[t++] = d;     if(d == y)         break; } d = queue[f] + Move[queue[f]]; if(d >= Size)     d -= Size; if(dp[d] == -1) {     dp[d] = dp[queue[f]] + 1;     queue[t++] = d;     if(d == y)         break; } ++f;        }        printf("%dn", dp[y]);    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379706.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号