- 注册时间
- 2009-5-22
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 38591
- 在线时间
- 小时
|
发表于 2010-1-27 21:47:15
|
显示全部楼层
只要维护两张列表即可。
第一张表是A上次放的坐标:
$(x_1,y_1),(x_2,y_2),(x_3,y_3),...,(x_n,y_n)$
第二张表是A这次放的坐标:
$(X_1,Y_1),(X_2,Y_2),(X_3,Y_3),...,(X_n,Y_n)$
如果x*y不大,可以用一个二维数组记录每个位置的连续摆放次数。
步骤如下:
把第二张表对应的位置全部标记并把该位置的连续摆放次数加1(对于问题1,满100给提示;对于问题2,记录最大值)。
逐个检查第一张表对应的位置:如果该位置未作标记,则该位置的连续摆放次数清零,否则不做任何操作。
根据第二张表把之前所作的标记去掉。
把第二张表的内容覆盖到第一张表上。
读入A下一次的摆放坐标,记录到第二张表上。
以上步骤重复执行。
如果x*y太大,以至于无法用二维数组记录每个位置的连续摆放次数,那么给两张表排序。
对于第二张表,按顺序检查里面的坐标是否也在第一张表中。
如果在,那么当前位置的连续摆放次数根据第一张表的记录加1得到;
否则记当前位置的连续摆放次数为1。
把第二张表中的坐标以及连续摆放次数的记录覆盖到第一张表中。
读入A下一次的摆放坐标,记录到第二张表上。
重复以上步骤。
没有不好实现的地方,也没有很麻烦的地方。
不知道楼主遇到了什么问题。 |
|