Author |
Message |
01/06/2011 20:06:48
|
bedzo
Joined: 18/01/2011 02:05:03
Messages: 234
Offline
|
Ми паѓа на 7миот тест пример.. Преголем е за да најдам грешка..
Ми вади точно на колку време максимално не се работело на крава, а ми вади грешка на колку време максимално се работело на крава.
Како да го решам?
|
|
|
01/06/2011 20:28:15
|
obi1kenobi
Joined: 18/02/2010 20:01:33
Messages: 168
Offline
|
Дали си сигурен дека кодот за наоѓање максимално време кога не се работело со ниедна крава ти е точен? Ај разгледај го уште еднаш и размисли ги граничните случаеви.
Разгледај го убаво и редот 42 и размисли што ќе се случи во последната итерација.
Во ред 37 можеш да ставиш едно else, ќе заштедиш процесорско време. Во оваа задача тоа е минимално, ама ако продолжиш да се натпреваруваш ќе се најдеш во ситуација таква некоја ситница во циклус кој се повторува 50 милиони пати да те чини цела задача. Мене тоа ми се случи на TopCoder, и тоа за „ситница“ која е толку бледо документирана што и самите организатори не беа свесни за проблемот.
|
|
|
01/06/2011 20:46:34
|
bedzo
Joined: 18/01/2011 02:05:03
Messages: 234
Offline
|
За неработењето на крава ми е 100% точен бидејќи работи на сортирана низа и ако најде некоја крава да завршува пред најкасно завршената да заврши не брои.
Џабе, ставив и ограничување во 42риот ред.. && i+1<n и пак не работи. + тоа нема веза бидејќи и да стави стејт=1 на крај пак ќе заврши циклусот
Here are the respective outputs:
----- our output ---------
912_184
---- your output ---------
378_184
--------------------------
This message was edited 2 times. Last update was at 02/06/2011 00:25:40
|
|
|
01/06/2011 22:38:54
|
bedzo
Joined: 18/01/2011 02:05:03
Messages: 234
Offline
|
Ја решив задачата така што ставив да се израмнуват. пример:
3
100 200
101 198
150 250
да го направи прво
100 200
101 200
150 250
за да неморам да памтам најголеми променливи.
еве како го средив:
Благодарам Оби за помошта!
This message was edited 1 time. Last update was at 01/06/2011 22:44:28
|
|
|
02/06/2011 00:26:31
|
obi1kenobi
Joined: 18/02/2010 20:01:33
Messages: 168
Offline
|
bedzo wrote:За неработењето на крава ми е 100% точен бидејќи работи на сортирана низа и ако најде некоја крава да завршува пред најкасно завршената да заврши не брои.
Џабе, ставив и ограничување во 42риот ред.. && i+1<n и пак не работи. + тоа нема веза бидејќи и да стави стејт=1 на крај пак ќе заврши циклусот
Here are the respective outputs:
----- our output ---------
912_184
---- your output ---------
378_184
--------------------------
Ај пробај си го стариот код на примерот што сам си го даде:
3
100 200
101 198
150 250
Уште си уверен дека за неработењето на крава кодот ти е точен?
+ тоа нема веза бидејќи и да стави стејт=1 на крај пак ќе заврши циклусот
Е веќе тука немаш врска. Знаеш што е segmentation fault? Знаеш дека може а не мора да излезе? Зошто да си играш со оган за џабе?
|
|
|
02/06/2011 14:28:04
|
bedzo
Joined: 18/01/2011 02:05:03
Messages: 234
Offline
|
Во претходниот код не ми работеше тоа дури после увидов на грешката. А во новиот код работи перфектно бидејќи ако завршува пред предходната го ставам завршетокот исти како на претходната. А segmentation fault точно незнам што е, ама ми има излегувано некогаш.
This message was edited 1 time. Last update was at 02/06/2011 14:28:46
|
|
|
02/06/2011 15:36:26
|
obi1kenobi
Joined: 18/02/2010 20:01:33
Messages: 168
Offline
|
bedzo wrote:Во претходниот код не ми работеше тоа дури после увидов на грешката. А во новиот код работи перфектно бидејќи ако завршува пред предходната го ставам завршетокот исти како на претходната.
А segmentation fault точно незнам што е, ама ми има излегувано некогаш.
http://tinyurl.com/76qq3u
Wikipedia wrote:
Common causes
A few causes of a segmentation fault can be summarized as follows:
a buffer overflow.
using uninitialized pointers.
dereferencing NULL pointers.
attempting to access memory the program does not own. *** Ova go pravis ti vo kodot ***
attempting to alter memory the program does not own (storage violation).
Generally, segmentation faults occur because: a pointer is either NULL, points to random memory (probably never initialized to anything), or points to memory that has been freed/deallocated/"deleted".
Претпоставувам дека си почнал со програмирање во C++ затоа што C++ знае понекогаш да простува вакви грешки, ама тоа не значи дека свесно треба да ги ставаш во кодот. Ако некогаш те изнервирала некоја програма што ти се срушила и ти ги изгубила сите податоци, тоа е затоа што за некој од програмерите нешто вакво „немало веза“. Пробај C# или Java да видиш како таквите јазици вриштат на ваква грешка па ќе видиш дека не е баш мала работа.
|
|
|
02/06/2011 17:14:00
|
bedzo
Joined: 18/01/2011 02:05:03
Messages: 234
Offline
|
Го прогуглав ова уште прееска Се осигурив дека е тоа што мислам Благодарам енивеј.
|
|
|
02/06/2011 19:09:01
|
obi1kenobi
Joined: 18/02/2010 20:01:33
Messages: 168
Offline
|
bedzo wrote:Го прогуглав ова уште прееска Се осигурив дека е тоа што мислам Благодарам енивеј.
Np Kako TopCoder btw?
|
|
|
02/06/2011 19:35:19
|
bedzo
Joined: 18/01/2011 02:05:03
Messages: 234
Offline
|
Ми се изгаси 2 пати компјутерот по ред ради струјата и баталив сум изгубил 60 поени и сум паднал на сиво -.- х).. Минатиот бев 55то а можев у топ 30 да се пласирам.. Изгубив 50 поена без веза на прва бидејќи се замарав со еден ИФ стејтмент внатре.. Него ова за трансформаторите треба да испишам 500 реда код да ја решам или има некој пократок начин за ротирање на матрица за 90 степени?
This message was edited 1 time. Last update was at 02/06/2011 19:37:32
|
|
|
02/06/2011 20:45:45
|
obi1kenobi
Joined: 18/02/2010 20:01:33
Messages: 168
Offline
|
Декларираш уште една матрица и користиш два фора. Пробај сам смисли го решението од тука
|
|
|
02/06/2011 23:31:31
|
bedzo
Joined: 18/01/2011 02:05:03
Messages: 234
Offline
|
Знам дека ке е тоа, но ќе ми треба и 3та матрица за да користам 1 функција за ротирање и за 180 и за 270.
|
|
|
03/06/2011 00:33:21
|
obi1kenobi
Joined: 18/02/2010 20:01:33
Messages: 168
Offline
|
Ај пробај да смислиш начин со една функција да можеш да ротираш по желба и од функцијата како резултат да ја добиеш матрицата одговор.
|
|
|
03/06/2011 16:57:20
|
bedzo
Joined: 18/01/2011 02:05:03
Messages: 234
Offline
|
Дали треба да изгледа така некако?
void fun(mat1[][],mat2[][],n){
if(n==1){
ovde clockwise 90
}
if(n==2){
180 stepeni
}
if(n==3){
counter-clocck 90
}
или кога ке ја најдам матрицата за 90, да ја направам еднаква со таа која што ни е дадена и да ја претворам во 180 во помошната?
И ако има за влез матрица со 1 елемент треба да испечатиме 6? Или треба по редослед? Бидејќи сите од 1-6 се точни.
|
|
|
03/06/2011 18:02:18
|
tStojkovski
Joined: 13/02/2010 14:23:00
Messages: 108
Location: Гостивар
Offline
|
bedzo wrote:Дали треба да изгледа така некако?
void fun(mat1[][],mat2[][],n){
if(n==1){
ovde clockwise 90
}
if(n==2){
180 stepeni
}
if(n==3){
counter-clocck 90
}
или кога ке ја најдам матрицата за 90, да ја направам еднаква со таа која што ни е дадена и да ја претворам во 180 во помошната?
И ако има за влез матрица со 1 елемент треба да испечатиме 6? Или треба по редослед? Бидејќи сите од 1-6 се точни.
кога ќе направиш функција за ротирање 90 степени после само ротираш уште еднаш...
пример ротација за 270 степени вака би изгледало: rotate(rotate(rotate(mat,n),n),n);
каде што rotate() ротира матрица за 90 степени
|
|
|
|