logo

Какво да правите в момента на грешен отговор (WA)?

Винаги е имало случай, когато грешен отговор причинява твърде много болка, отколкото TLE (Превишен срок) тъй като в предишния не можете да установите кой тестов случай се проваля, но по-късно можете да прецените, че за коя стойност на N (обща инструкция) ще покаже TLE. 
 

И така, какво да правим по това време?

    Прочетете внимателно въпроса:Първият път, когато получите WA (грешен отговор), винаги бъдете сигурни, че сте прочели всяка дума и сте разбрали напълно въпроса, защото през повечето време пропускахме тази част, която е в основата на целия въпрос. 
     Проверете входно/изходното форматиране:Обикновено програмистите обикновено забравят да добавят нов ред или бяло пространство според изискването на въпроса. Така че, преди да изпратите решението на онлайн съдията, опитайте да стартирате програмата си в онлайн компилатори като code.geeksforgeeks.org или ideone .Проверете алгоритъма/логиката на програмата:Уверете се, че използвате правилна логика, която покрива или не покрива всички тестови случаи. 
     Ъглови тестови случаиОпитайте се да стартирате кода си на гранични тестови случаи, ако е възможно, като 0 1 2 или N. 

     

Избягвайте глупавите грешки



    Инициализиране на променлива:Понякога забравяме да инициализираме отново масивите с променливи след всеки тестов случай T. Например- 
    • Инициализирайте стойността на променливата count на 0.
    • Задаване на всички стойности на масива DP[] на 0 или -1.
    Тип данни Препълване:Винаги пазете ограничението, дадено за стойността на N или друг вход в ума си, и направете програмата си в обхвата на правилния тип данни като int long long в C/C++ или int long в JAVA и т.н., за да избегнете препълване. 
     Модулен проблем:При въпроси като Модулна аритметика (отговор % MOD) винаги се уверявайте, че отговорът не получава отрицателна стойност, така че опитайте да използвате (отговор + MOD) % MOD, който ще покрие всички възможности. 
     

Отстраняване на грешки  

    Най-важната част е отстраняването на грешки:Можете или да използвате вградения дебъгер на Codeblock Eclipse съответно в C/C++ и JAVA, или можете да отпечатате променливата след всеки ред, така че да можете да прецените дали вашата програма работи според вашите изисквания или не.Използвайте твърдение:Ако възнамерявате да напишете много редове в кода си, тогава използването на assert() напълно си заслужава. Кликнете тук за да прочетете повече за това как да използвате Assertion в състезателното програмиране. 
     Потърсете дадени предложения:Въпреки че това трябва да е последната стъпка, но трябва да погледнете коментарите по-долу, в които други програмисти може също да са се сблъскали със същия проблем и да са дали намек как да изкоренят този проблем.



В крайна сметка винаги се опитвайте да напишете чист код с малка функция, която има добре дефинирана цел.  

 

Създаване на тест