| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 374 人关注过本帖
标题:算法---poj 1209
取消只看楼主 加入收藏
sixleaves
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-10-21
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:1 
算法---poj 1209
地址:http://

这题是模拟题,大悲催啊~,被卡个半死,花了三天,查资料,编码,结果运行,竟然不出结果。
于是又去UVA的论坛查找,看到有人话费好大力气还用链表写,这是不敢恭维~。在百度上查了一个自称ac的了,到uva上还是wa,在poj上测试下竟然能过~~~,我先去研究他的代码去了。

在网上还看到一种思路,但是对于第二次输入'D'的那个不太理解~~~,思路如下:

1)输入年份year,计算year是否是闰年;

2)反复处理输入输出信息,直至输入'#'为止。

若输入周年纪念日标志'A',则累计周年纪念日数n,输入第n个周年纪念的日期(e[n].month,e[n].day)、重要性参数e[n].level、描述事件的字符串e[n].a、输入次序e[n].index=n。

若输入服务标志'D',分两种情况处理:

1)若第1次输入'D',则按照周年纪念的日期为第1关键字、重要性参数为第2关键字、输入次序为第3关键字的递增顺序排列事件序列e[1..n]。

2)若非第1次输入'D',则首先读服务日期(month,day),并将日期计数器cnt初始化为

-1,然后进入循环,直至cnt到达提醒天数的上限7为止:

若为当天服务(cnt= -1),则将e序列中周年纪念日期为(month,day)的事件存储在s中,按照输入次序递增的顺序重新排列s,然后以重要性参数为*TODAY*的名义依次输出s中事件的日期和描述事件的字符串。

若非当天服务(cnt≠-1),则依次寻找e序列中周年纪念日期为(month,day)的事件e[i](e[i].month == month && e[i].day == day,1≤i≤n),计算该事件剩余的提醒时间num=e[i].level-cnt。若num≤0,则说明该事件已过提醒时间;否则输出服务标识(num个'*'和8-num个空格)和描述事件的字符串e[i].a。

累计过去的天数(cnt++)。若过了提醒期限(cnt == 7),则退出循环;否则获取month月day日的下一天日期(month,day)。


算法高手能不能讲解讲解,或者是有更好的方法。。。
搜索更多相关主题的帖子: 百度 纪念日 资料 
2012-11-18 22:47
sixleaves
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-10-21
收藏
得分:0 
回复 2楼 青春无限
我发个中文翻译的:


大多数人都有一个日历,在日历上我们会记下生活中重要事件的细节,诸如去看牙医、售书《the Regent 24 hour》、程序设计竞赛;还有一些固定的日期,如合作伙伴的生日,结婚周年纪念日,等等,这些日期我们需要记住。通常,当这些重要日期临近的时候,我们需要提醒,事情越重要,我们就越希望事先能记下这些事。

请编写一个提供这种服务程序。输入给出这一年的重要日期(年份范围从1901到1999)。要注意的是,在给出的范围内,所有被4整除的年份是闰年,因此要加入额外的一天(2月29日)。输出将给出“Today誷”日期、即将到来的事件和这些事件的相对重要性的列表。  

输入

输入的第一行给出一个表示年份的整数(范围从1901到1999)。后面几行表示周年纪念日或服务所要求的日期。

一个周年纪念日由字母'A',三个表示这一事件的日期、月份和重要性的整数(D, M, P),以及一个描述事件的字符串组成,这些项用一个或多个空格分开。P在1到7之间取值,表示在事件前要开始提醒服务的天数。 给出的描述事件的字符串以非空字符开始。

一个日期行由一个字母'D'和如上所述的日期和月份组成。

所有周年纪念日在日期行之前,每行不超过255个字符。文件以仅包含一个#的行作为结束。

输出

输出由若干部分组成,输出的每行对应输入中的一个日期行,由要求的日期和后面给出的必要的事件列表组成。

输出给出事件的日期(D和M,每项宽度为3),以及事件的相对重要性。今日发生的事件标识如下,发生在明天的事件有P颗星,后天发生的事件有P-1颗星,等等。如果几个事件在同一天发生,按其重要性排列(星的个数)。

如果还存在冲突,按其在输入流中出现的次序排列。格式见样例。
2012-11-18 22:51
快速回复:算法---poj 1209
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015921 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved