总是有一个错误的答案会给您带来过多的痛苦,而不是给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现场课程美国》。