今年的三个竞赛题都特别有意思,我也特别喜欢 USA Computing Olympic (美国计算机奥林匹克竞赛) 这种风格。都和他们的吉祥物奶牛有关系。

先说我对第一题的看法。 http://usaco.org/index.php?page=viewproblem2&cpid=1083

image

原题特别有意思,讲的时一头奶牛哼特殊字母表述子字符串的。

其实观察一下它的样例输出,不难发现,只要你想说的字母,例如mood,其中第一个字母“m”是在第二个字母“o”的前面的,那就可以只说一遍,“abcdefghijklMnOpqrstuvwxyz”把它说完。

但是如果第三个字母“O”是在第四个字母“D”的后面的,那你这段话要说2遍,就是,“abcdefghijklmnOpqrstuvwxyz“ 和 ”abcDefghijklmnopqrstuvwxyz”。

所以一共说了3遍,标准的样例输出就是3.

基于这个顺序的思路,只要你能把上面的步骤,按照先后顺序用代码组织出来就好,但是有个小坑,要注意如果两个for嵌套,该怎么写前后关系。

以下是我写的满分参考答案:

a,b = input(),input()
count = 0
bi = 0
end=0
while(end==0):
    for ai in range(len(a)):
        if bi < len(b):            
            if a[ai]==b[bi]:
                bi+=1  
        else:
            end = 1
    count+=1
print(count)