[Logo] Mendo Judge Discussion Board - Forums
  [Search] Search   [Recent Topics] Recent Topics   [Hottest Topics] Hottest Topics   [Members]  Member Listing   [Groups] Back to home page 
Messages posted by: MOI
Forum Index » Profile for MOI » Messages posted by MOI
Author Message
SmokiB wrote:pls,help... Zadacava nesto ne mi ispaga.[/code]

Имаш мала грешка. На линија 82, наместо
    if(currY < n-1
треба да биде
    if(currX < m-1

Perez wrote:Задачава ја мислам и никако идеја да ми дојде ... се се вртам со Greedy Algorithm ....

При алфабетско подредување, оние букви кои доаѓаат најлево се најважни (прво тие се гледаат при споредба на зборови, итн). Ова значи дека кога го гледаш првото '#', ако ја одбереш втората буква наместо првата како замена, ќе прескокнеш K^(колку знаци '#' има надесно). Ако го знаеш ова, можеш лесно да одлучиш дали да одиш со првата буква, или со втората, итн. (Слично, продолжуваш надесно и со другите појавувања на '#').
Perez wrote:Дали е возможно со овој начин
Мислење ?

Значи, за N=435 и K=1, низата ќе ти биде {5, 5, 5} и ќе ја избришеш четворката, така? Одговорот тука е 45, така да твојот алгоритам не функционира.
Perez wrote:http://mendo.mk/Task.do?id=19
Идеја ?!


Бројот 2^60 нема ни 20 цифри, така да можеш да ги испробаш сите подмножества од почетните цифри од бројот и да видиш кој број ќе има точен број на цифри и е најголем. Значи, ако почетниот број е 158, можеш да ги испробаш 1, 5, 8, 15, 18, 58, 158, да видиш кој има соодветен број цифри (зависно од К), и кој е најголем од нив.

Друг начин е следниот: Бидејќи знаеш колку цифри треба да има конечниот број, можеш прво за првата да разгледаш дали може она да е 9, 8, 7, 6, 5, ... додека не најдеш можна вредност (проверуваш така што го наоѓаш најраното појавување на цифрата, за да ти останат што повеќе цифри за понатаму).
BATIR wrote:http://mendo.mk/Task.do?id=51
Pomos?!
Fala odnapred

Добро, не мора рекурзија како решение на задачава, ама може ако ти е така полесно да размислуваш.
Еве поправено решение. Имај предвид дека името на агенцијата не е една буква (така да неможеш да користиш низа од g знаци, туку може на пример низа од g стрингови).
Perez wrote:На страната на мендо - > Натпревари -> Регионален натпревар 2018 дава дека почнува во 12:00 а на здружение на информатичари кажуваат во 12:30
Кое да му верувам ?

Официјално натпреварот ќе почне во 12:30, ама не е лошо да се дојде и 30 минути порано.
Всушност, пишува и на сајтот на ЗИМ дека треба да се дојде порано, за "да може да се распределат натпреварувачите во соодветните простории".
Kiko206 wrote:Имам проблем со задачата.Имам матрица(5х3) која ми е внесена преку иницијализирачка листа, и сакам да ги испечати по опаѓачки редослед односно од најголемиот до најмалиот број во низата а мене ми ја печати низата обратно од 15,44,13 итн.

Главната грешка ти е во 39-та линија (така мене ми ја покажува), и треба да замениш

со
BATIR wrote:Zdravo ja resavav zadaca komputeri, ama ne pominuva, moze mala pomos?

На сличен начин, ама можеш поефикасно да испиташ повеќе опции со рекурзија. Нешто вака.
На МЕНДО сега е инсталирана верзија 7.2 од gcc (последната што постои за mingw-w64).
За повеќето (скоро сите) решенија ова нема да има никакво влијание бидејќи веќе беше овозможено користење на позначајните функционалности - но еве, бидејќи некои ученици ја побараа последната верзија, го направивме и тоа.
MODDI wrote:Да ова решение работи но прашањето ми беше со моето решение некако да се реши задачава, бидејќи како што реков горе може да се случи број што е во средината на низата да се избрише, и после да провериме дали важи условот A*C=B*D од (ABCD).

Не гледам како може да се реши со твојата идеја. За најлесно да видиш, замисли пример како овој

Точниот одговор тука е 210. Максималниот број на повикувања на res++ во твојата програма е N (во случајов 10).
MODDI wrote:Ај ако може некој да ми даде идеја како да ја решам задачава, најпрво кога ја погледнав ми текна да ја проверувам цела низа бидејќи може да биде само до 4x5 ама таа може да почне од било кој единица кој е во матрицата и не смее да оди на единица која веќе е помината. Малку помош?

Една идеја е да користиш рекурзија. Накратко, замисли функција која што ќе ти прима аргументи кои кажуваат: 1) на која единица си во моментот, 2) кои единици се веќе посетени, и 3) кој потег (прв, втор, трет, итн) треба да се преземе. Од 1 и 3 можеш да знаеш кои се следни можни единици: имено, знаеш каде си сега и од 3 знаеш дали да бараш следен елемент во истиот ред или колона - и со рекурзија да ги испробаш сите можни потези (од 2 знаеш кои се веќе посетени).
Во главната функција можеш да ја почнеш рекурзија од секоја можна единица. Повеќе за идејата можеш да прочиташ во делот Алгоритми http://mendo.mk/Training.do?cid=6 (предавање "Рекурзија. Враќање наназад").
MODDI wrote:Значи ја решавав задачава и кодот што го пишав броевите ги правеше во четворки и проверуваше дали последните броеви и првите проеви се според условот X*A=Y*B (XYAB), ама има решенија каде бројот што треба да се брише е во средината во низата, малку помош?


Не сум сигурен што е прашањето, ти треба идеја за решавање на задачата?
Ако да, имај предвид дека N = 100 е всушност мноогу мал број за компјутер, така да можеш да ги испробаш (со 4 for циклуси) сите валидни четворки. (Оваа задача е од тест натпревар со многу учесници и кратко времетраење, па задачите беа направено во однос на поедноставните теми - како во случајов, опсежно пребарување).


Инаку, ако сеуште читаш, постои и поефикасно решение. Имено, A*C=B*D е исто што и A/B=D/C (види како првите два броја во низата се лево од вторите два броја - за едните можеш да тргнеш од лево, за другите од десно). Сега, бидејќи делењето може да доведе до реален број како резултат, треба овие вредности да ги чуваш како дропки, и тоа е тоа. (Ама нема потреба од вакво решение, бидејќи првото функционира, и секогаш треба да го користите наједноставниот пристап)
MODDI wrote:Ја решавам задачава и сега мојот код вади точно на четири тест примери, на некои ми враќа излезен код различен од 0 и дека некој се грешка ама јас не сфаќам каде ми е грешкава во кодот:

Интересно решение. Твојата грешка е што си играш со функцијата pow(), која всушност работи со реални броеви. Тие се непрецизни, можеш повеќе да прочиташ тука: http://mendo.mk/Lecture.do?id=21

Решението е да тргнеш include <cmath>, и да напишеш нова функција pow()
Perez wrote:http://prntscr.com/ilfg9x
Нели gnu gcc 5.4.0 или сега најновиот 7.2 ќе се ставаат

Па, што се однесува до МЕНДО, поставување на нова верзија се прави за буквално 2 минути (инсталација + менување една PATH вредност).
Причините поради кои не се менува верзијата често е што голем број натпреварувачи имаат различна верзија, и сеуште немаме информации во кои све училишта/факултет/региони ќе биде регионалниот (други настани), со цел да се смисли што е најдобро решение.

Генерално, во верзијата која што е на МЕНДО се поддржани скоро сите покорисни C++11 функционалности (така да повеќето натпреварувачи не приметуваат разлика). Ќе повторам, главен проблем е што немаме сите иста верзија на околини/компајлери (всушност, повеќето училишта имаат постари верзии на Code::Blocks, gcc, итн), и таму е потешко да се направат промени бидејќи треба да се направат на голем број компјутери. (Искрено, за инсталации во училиштата веројатно одлучуваат директорите/наставниците, така да не би знаел колку се заинтересирани за ова)
andrejsumkovski wrote:Здраво
Ја решавав Аеродром од 2016 година на училишен, моментално се спремам за натпреварот во среда.

Тие две се во ред (и поддржани се повеќето новини од C++11, ама веројатно не е скроз иста верзија како на твојот компјутер чим имаш потешкотии).
Инаку, гледајќи го C++11 и твојот код можно е да има проблем со функцијата to_string. Ако сакаш да напишеш нешто такво, додади #include <sstream> и потоа

Инаку, во твојата програма има доста наредби за печатење од типот

Тие ќе мораш да ги тргнеш пред да испратиш решение на МЕНДО, бидејќи резултатите треба да се печатат како што е дефинирано во текстот на задачата.
 
Forum Index » Profile for MOI » Messages posted by MOI
Go to:   
Powered by JForum 2.1.8 © JForum Team