我是一名编码初学者。我已经开始练习SPOJ基本问题。This是我试图解决的问题,但代码不正确。
请帮我解决这个问题的错误,因为我无法弄明白:
'
编辑:
I / P:4 您的 进展 是 显
O / P ÿ PO 一世 NTC
答案 0 :(得分:1)
OK!因此经过大量的打击和试验,我知道您的代码有什么问题。由于randomWords[i].length()%2!=0
中的条件if
,您编写的代码失败。将此条件用于检查输入没有任何问题,但如果您将选择样本测试用例,则在突出显示的蓝色区域内,您会注意到每个字符串后面有一个额外的空格。像这样:
您可以看到除了最后一个输入之外,所有其他输入字符串的末尾都有空格字符。因此,当您从stdin
读取字符串时,字符串的长度为2*k + 1
(由于空格),您的程序将在没有任何输出的情况下退出。因此你得到了错误的答案。
这个问题也存在于其他测试用例中。我怎么知道这个?在spoj显示错误答案之后,如果您点击错误答案,它将显示2个失败的测试用例,如下所示:
它显示您的程序输出为空,因为您的代码因字符串末尾的额外空格而退出。 所以,我认为编写测试用例的人应该被给予 WT 错误(错误的测试用例):P:D
因此,可能的更正是您从if
中移除了上述条件,您将获得AC。因为现在您要将2*k + 1
除以2
,这将不是一个整数,它将四舍五入到最接近的最小整数,这与将2*k
除以{{1}相同并且程序将给出正确的结果。
在解决有关spoj的问题时应该注意的一些事项,您不必验证每个输入是否在问题中指定的范围内,或者它是否是有效的数据类型。该范围告诉您,Spoj将仅测试您的程序,其中的案例介于这些范围之间且不会超过它们。因此,即使您删除了检查输入数据的异常和范围的所有代码,您也将获得AC。而且,编写这样的代码只会增加负担。
希望这会有所帮助。 :)