ACM编程竞赛 - Python解决方案

时间:2014-11-16 02:51:50

标签: python

我已经盯着ACM编程问题好几天了,无法弄清楚为什么我的Python解决方案不被接受。它在“测试28”上失败,计算机没有告诉你“测试28”的输入是什么样的。我用原来的措辞留下了这个问题 - 它来自俄罗斯或中国的一些ACM网站。这是个问题:

孩子接受由多项选择题作为家庭作业的测试。多项选择题包括四个选项:A,B,C和D.每个选项都有一个描述,要求孩子选择正确的答案。

孩子事先没有读过他的书,也不知道答案。幸运的是,他设计了一个聪明的策略。孩子将遵循此算法:

1。如果有一些选择,其描述至少比所有其他描述短两倍,或者至少比所有其他描述长两倍,那么孩子认为选择很好。

2。如果有一个很好的选择,那么孩子就会选择它。否则孩子会选择C(孩子认为这是最幸运的选择)。

您会收到一个多项选择题,您能预测孩子的选择吗?

输入: 第一行以“A”开头。 (不带引号),然后是选择A的描述。接下来的三行包含相同格式的其他选项的描述。它们按照B,C,D的顺序给出。请注意,描述在前缀“X”之后,因此前缀不得计入描述的长度。

每个描述都是非空的,最多包含100个字符。每个字符可以是大写英文字母或小写英文字母,或“_”。

输出: 根据孩子的选择打印一行:“A”,“B”,“C”或“D”(不带引号)。

示例输入:

Input
A.VFleaKing_is_the_author_of_this_problem
B.Picks_is_the_author_of_this_problem
C.Picking_is_the_author_of_this_problem
D.Ftiasch_is_cute

Output
D

Input
A.ab
B.abcde
C.ab
D.abc

Output
C

Input
A.c
B.cc
C.c
D.c

Output
B

我的解决方案在这里:http://ideone.com/FzXvvc

1 个答案:

答案 0 :(得分:2)

您似乎无法处理有多个良好解决方案的解决方案(larger = 3 smaller = 3)。在您的情况下,将返回minkey,而不是c。在这种情况下,问题需要c

尝试:

if larger == 3:
    if smaller == 3:
        return "C"
    else:
        return minkey
elif smaller == 3:
    return maxkey
else:
    return "C"