2013年下半年ACM集训组队练习赛7解题报告

2013年下半年ACM集训组队练习赛7 C题-by shfs

A:Hospital

B:Happy Numbers

C:Absent Substrings

D:Piece of cake!

E:Constructing Roads

F:Stacking Cylinders

G:Frosh Week

H:Count The Number

I:Passage

J:Mining

c题看到做的人不多,稍稍说下。

题目大意:a b c 任意组合组成字符串,然后排序先根据字符串长度,长度相同再根据字典序排序

所以得到这样的序列:

a

b

c

aa

ab

...

题目的任务是找到第一个在字符串中没有出现的以上字符串

比如样例 bcabacbaa

出现了 a  b  c  aa ab ac ba ,然后下一个是bb,没有出现就按格式输出就好了,

第二行是一个空的字符串所以直接没有a,按格式输出,同时也说明要用gets()输入,而不是%s输入

接下来的问题就是一个个得到这样的字符串从a  b  c  aa ab..,然后没有找到就输出来就好了

得到字符串的方法:依次编号a对应1  b对应2  c对应3 aa对应4  ab对应5  ac对应6

就可以想到类似于二进制思路,但是没有0,因为只有abc3个值,所以从低位到高位权值依次是1   3   9  。。。

所以比如6转化为字符串可以这样,6%3是0,虽然理论上最低位应该是0,不过不是不能有零啊,所以最低位应该取3对应c

然后(6-3)/3=1所以第二位是1取a,所以可以得到6对应的字符串是ac,按照这样的思路就可以根据编号直接得到字符串

然后直接用strstr(主串,子串),如果找不到返回null,然后循环结束输出就好了。


为解题报告打分
暂时不评分

★★
★★★
★★★★
★★★★★
发表您的评论(若贴AC代码或发表禁止言论等违禁行为将被删除并扣除积分)

|返回 |   | 转到页头|
Copyright @ 2008-2024(浙ICP备2022001332号), TZOJ. All Rights Reserved.