Author |
Message |
|
Не е доволно ефикасен кодот за голем број на натпреварувачи. Со 16 натпреварувача (да кажеме дека сите имаат различно знаење) имаш вкупно 16! = 20922789888000 различни начини да ги распоредиш. Во најлош случај (18 натпреварувачи, колку е ограничувањето) постојат вкупно 6402373705728000 различни начини. Временското ограничување е една секунда, за кое време е невозможно да се направат сите пресметки.
Во тренинг секцијата имаш лекции за споредба на алгоритми, можеш да научиш таму нешто повеќе околу сложеноста на алгоритмите и колку време треба да се извршат.
|
|
|
Линк до задачата
Ја имам скоро целата задача решена (работи кодот со првите 5 начини на распоредување на правоаголниците, дава точен резултат за тест примерот), само не знам како да ја најдам најмалата површина за 6тиот распоред. Помош?
|
|
|
Си ја најдов грешката. Еве го моето решение за оваа задача.
|
|
|
Damn, секогаш за глупи грешки барам помош на форумов.
Добро е, работи сега
Доколку некој го интересира, кодот е :
|
|
|
obi1kenobi wrote:Пушти ја во debugger задачата на примерот кај што јавува грешка и види барем на која линија е грешката. Тој излезен код е segmentation fault, така да некаде пристапуваш на недозволена мемориска локација.
11-ти ред, каде што почнува floodfill функцијата. Но таму не пристапувам на никаква променлива (пристапувам дури во 13ти ред, но и таму сите променливи кои ги отворам се валидни (ги пратев променливите со watch со дебагерот)).
|
|
|
Може некој да ми помогне да си ја најдам грешката за Овци?
Планирам да ја решам со flood fill но ми прави crash (враќа -1073741573 (0xC00000FD)) секогаш, не успеав да откријам во што е проблемот.
|
|
|
MOI wrote:
addictus wrote:Без проблеми кодов ми работи во било кој компајлер освен на сајтов (вадев и пробував тест примери). Проблемот е некаде во редовите 47 - 52 каде што би требало да го одредам најблискиот број кој е поголем до потребниот (на пример потребен е 99993 а 3 и 4 не се дозволени, да ми даде 99995). На било кој компајлер ми работи без проблеми и ми ги додава броевите 90,000 ; 9,000 ; 900 ; 90 ; 5 за да добијам финални 99,995 додека тука прави некои вариации со 89,999 ; 98,999 ; 99,899 ; 99,989 и слични. Променливата maxbroj има зададена почетна вредност 0, така да тоа не е проблемот. Исто така ги проверував вредностите на broj[j]*pow(10,broj.size()-j-1) и исто така тие се нормални, така да не сум сигурен што би можело да го предизвикува проблемот.
Задачава ми поминува на 6 од 10 тест примери, а на code::blocks / ideone ми поминува на другите примери.
Провери тука: http://mendo.mk/jforum/posts/list/165.page
Вториот пример (само тој го проверив) не дава точен резултат ни на МЕНДО ни на Ideone.com. Сигурно ли ти е ова најновото решение?
Ми паѓаше на 2/8/9/10. На вториот пример паѓаше за друга причина (лесно поправив), а 8/9/10 паѓаше заради pow. Направив своја функција за степенување што враќа integer и ми помина.
Фала!
|
|
|
Може некој да ми помогне да ја најдам грешката во мојот код?
Без проблеми кодов ми работи во било кој компајлер освен на сајтов (вадев и пробував тест примери). Проблемот е некаде во редовите 47 - 52 каде што би требало да го одредам најблискиот број кој е поголем до потребниот (на пример потребен е 99993 а 3 и 4 не се дозволени, да ми даде 99995). На било кој компајлер ми работи без проблеми и ми ги додава броевите 90,000 ; 9,000 ; 900 ; 90 ; 5 за да добијам финални 99,995 додека тука прави некои вариации со 89,999 ; 98,999 ; 99,899 ; 99,989 и слични. Променливата maxbroj има зададена почетна вредност 0, така да тоа не е проблемот. Исто така ги проверував вредностите на broj[j]*pow(10,broj.size()-j-1) и исто така тие се нормални, така да не сум сигурен што би можело да го предизвикува проблемот.
Задачава ми поминува на 6 од 10 тест примери, а на code::blocks / ideone ми поминува на другите примери.
|
|
|
|
|