📜  错误答案(WA)时该怎么办?

📅  最后修改于: 2021-06-26 09:10:24             🧑  作者: Mango

总是有一个错误的答案会给您带来过多的痛苦,而不是给TLE(超过时限)带来痛苦,因为在前一种情况下,您无法确定哪个测试用例失败了,但是在以后,您可以估算出N的哪个值(总说明),它将显示TLE。

那么当时该怎么办?

  • 仔细阅读问题:第一次出现WA(错误答案)时,请务必确保已阅读每个单词并完全理解该问题,因为在大多数情况下,我们会跳过作为整体基础的特定部分问题。
  • 检查输入/输出格式:大多数情况下,程序员通常会根据问题的要求而忘记添加新行或空白。因此,在将解决方案提交给Online评委之前,请尝试在在线编译器(如code.geeksforgeeks.org或ideone)中运行您的程序。
  • 检查程序的算法/逻辑:确保使用正确的逻辑来覆盖所有测试用例。
  • 角测试用例尝试在边界测试用例上运行代码,如果可能的话,例如0、1、2或N。

避免愚蠢的错误

  • 初始化变量:有时我们忘记在每个测试用例T之后重新初始化变量,数组。例如-
    • 将count变量的值初始化为0。
    • 将DP []数组的所有值设置为0或-1。

    因此,至少输入两次相同或不同的测试用例,并检查是否获得正确的输出。

  • 数据类型溢出:请始终牢记对N值或其他输入的约束,并使程序处于正确的数据类型范围内,例如int,C / C++中为long long或int, Java为long等,以避免溢出。
  • 模块化问题:在诸如模块化算术(answer%MOD)之类的问题中,始终确保答案不会出现负值,因此请尝试使用(answer + MOD)%MOD,这将涵盖所有可能性。

调试

  • 最重要的部分是调试:您可以分别使用C / C++和Java的Codeblock,Ecllipse的inbulit调试器,也可以在每一行之后打印变量,以便可以根据需要估计程序正在运行,或者不是。
  • 使用断言:如果您打算在代码中写很多行,那么使用assert()是完全值得的。单击此处以了解有关如何在竞争性编程中使用断言的更多信息。
  • 寻找给出的建议:尽管这应该是最后一步,但是您必须查看下面给出的注释,在这些注释中,其他程序员可能也面临相同的问题,并给出了有关如何消除此问题的提示。

最终,请始终尝试使用具有明确定义目的的小函数编写干净的代码。

如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。