MitS Napisano Listopad 1, 2007 Zgłoszenie Share Napisano Listopad 1, 2007 Witam, mam znowu problem otoz mam taki kod: #include <iostream> using namespace std; int main(int argc, char *argv[]){ short dziesiatki = 0; int a, b, N, *res; cin >> N; if(N<0 || N>1000000) return 0; res = new int [N]; for(int i=0; i<N; i++){ cin >> a >> b; res[i] = (a + b); if(res[i] > 1000000) return 0; } N--; for(int i=N; i>=0; i--){ res[i] += dziesiatki; dziesiatki = (res[i]%100)/10; res[i] = (res[i]/100)*10+res[i]%10; } for(int i=0; i<=N; i++) cout << res[i]; delete [] res; return 0; } i niestety zajmuje mi za duzo pamieci (obecnie 2216 KB), wiec chciałbym was sie zapytać jak mogę go bardziej zoptymalizować tak by zajmował max 512 kb ?? Będę wdzięczny za pomoc. Pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Lukasz69 Napisano Listopad 2, 2007 Zgłoszenie Share Napisano Listopad 2, 2007 Wielkim programista nie jestem ale na moj gust nie zejdziesz za bardzo z zuzyciem pamieci. Inicjujac 1000000 zmiennych int musisz uzyc 1000000*sizeof(int) B. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
MitS Napisano Listopad 2, 2007 Autor Zgłoszenie Share Napisano Listopad 2, 2007 nie rozumiem dwoch rzeczy ... czemu od razu mowisz ze inicjuje 1000000 zmiennych ?? przeciez do zalezy od wpisanej liczby N ... czy moze sie myle ?? a druga sprawa 1000000*sizeof(int) B skąd sie wzieło B i napisałeś że musiał bym tego uzyc ... w ktorym miejscu ? Sorry ale troche nie zrozumialem teog co mi napisałeś wiec prosil bym o rozszerzenie twojej mysli ... Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
wyksztalcioch Napisano Listopad 2, 2007 Zgłoszenie Share Napisano Listopad 2, 2007 nie rozumiem dwoch rzeczy ... czemu od razu mowisz ze inicjuje 1000000 zmiennych ?? przeciez do zalezy od wpisanej liczby N ... czy moze sie myle ?? a druga sprawa 1000000*sizeof(int) B skąd sie wzieło B i napisałeś że musiał bym tego uzyc ... w ktorym miejscu ? Sorry ale troche nie zrozumialem teog co mi napisałeś wiec prosil bym o rozszerzenie twojej mysli ... 1000000 zmiennych, bo to jest najgorszy wypadek, kiedy N=1000000. A 'B' to zapewne chodziło o bajty Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Lukasz69 Napisano Listopad 2, 2007 Zgłoszenie Share Napisano Listopad 2, 2007 nie rozumiem dwoch rzeczy ... czemu od razu mowisz ze inicjuje 1000000 zmiennych ?? przeciez do zalezy od wpisanej liczby N ... czy moze sie myle ?? a druga sprawa 1000000*sizeof(int) B skąd sie wzieło B i napisałeś że musiał bym tego uzyc ... w ktorym miejscu ? Sorry ale troche nie zrozumialem teog co mi napisałeś wiec prosil bym o rozszerzenie twojej mysli ... B to od bajtu a sizeof() podaje ile bajtow zajmuje dana zmienna danego typu. Jest to wazne poniewaz zmienne w roznych systemach i/lub innych kompilatorach moga zajmowac inna liczbe bajtow. Napisalem 1000000 poniewaz powinno sie analizowac przyklad najmniej korzystny. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
MitS Napisano Listopad 2, 2007 Autor Zgłoszenie Share Napisano Listopad 2, 2007 ok juz kumam przetestuje :D Pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
MitS Napisano Listopad 2, 2007 Autor Zgłoszenie Share Napisano Listopad 2, 2007 niestety zrobiłem testy z tym co napisałeś ... niestety cały czas taką samą pamięc wykorzystuje ... ma ktoś jeszcze jakieś pomysły ?? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Lukasz69 Napisano Listopad 3, 2007 Zgłoszenie Share Napisano Listopad 3, 2007 niestety zrobiłem testy z tym co napisałeś ... niestety cały czas taką samą pamięc wykorzystuje ... ma ktoś jeszcze jakieś pomysły ?? W czym sprawdzasz uzycie pamieci? Ja sobie sprawdzam w KDE Straznik Systemu - sprawdzilem tez w top bo nie wiem z czego Ty korzystasz a chcialbym zebys zrozumial. Wiec tak pole WielkoscPW odpowiada z top pole VIRT i pokazuje ono calkowite miejsce jakie program moze zuzyc. Pole ZasobyPW=RES i to oznacza ile program w biezacej chwili korzysta z pamieci. Twoj program nie moze brac mniej pamieci poniewaz ma taka strukture zmiennych jaka ma. Moze trzeba inaczej napisac ten program? Co on w ogole ma robic? W biezacej formie program bedzie siupal tyle pamieci ile siupie. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Listopad 3, 2007 Zgłoszenie Share Napisano Listopad 3, 2007 To ja znowu powiem, że programista ze mnie żaden, ale IMHO zaincludowanie <iostream> powoduje chyba od razu zaalokowanie niezbędnej pamięci. Czyli żeby zoptymalizować kod trzeba by chyba napisać jakieś własne klasy zamiast korzystać ze standardowego pliku nagłówkowego. Może ja jakieś głupoty piszę, ale tak na chłopski rozum... Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Lukasz69 Napisano Listopad 3, 2007 Zgłoszenie Share Napisano Listopad 3, 2007 To ja znowu powiem, że programista ze mnie żaden, ale IMHO zaincludowanie <iostream> powoduje chyba od razu zaalokowanie niezbędnej pamięci. Czyli żeby zoptymalizować kod trzeba by chyba napisać jakieś własne klasy zamiast korzystać ze standardowego pliku nagłówkowego. Może ja jakieś głupoty piszę, ale tak na chłopski rozum... Na moj gust za duzo kombinujesz. Po to sa standardy by z nich korzystac i sa one tak napisane by byly jak najbardziej optymalne. Co do wielkosci pamieci to trzeba pamietac ze system na samym starcie alokuje pamiec na stos na sterte - tak juz jest i tego sie nie zmieni - no chyba ze napisze sie swoj system operacyjny Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
MitS Napisano Listopad 3, 2007 Autor Zgłoszenie Share Napisano Listopad 3, 2007 To ja znowu powiem, że programista ze mnie żaden, ale IMHO zaincludowanie <iostream> powoduje chyba od razu zaalokowanie niezbędnej pamięci. Czyli żeby zoptymalizować kod trzeba by chyba napisać jakieś własne klasy zamiast korzystać ze standardowego pliku nagłówkowego. Może ja jakieś głupoty piszę, ale tak na chłopski rozum... unsure.gif tak, same: #include <iostream> using namespace std; int main(){return 0;} zajmuje około 220 kb pamieci, cały powyzszy kod zajmuje tyle ile wyzej napisałęm (2216 kb, choć jak przekonwertuje na czyste C to 2206 kb), lecz niestety dla mnie to jest 4 krotnie za dużo. co do zadania to jest to zadanie z opss.safo.biz -> http://opss.safo.biz/?menu=comp⊂=pr...0&prob=1017 a pamięć sprawdzam po przez ten serwis, (wczesniej probowałem uzywając polecenia "top" ale cos chyba mnie kłamał). Co do samego Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Lukasz69 Napisano Listopad 3, 2007 Zgłoszenie Share Napisano Listopad 3, 2007 tak, same: #include <iostream> using namespace std; int main(){return 0;} zajmuje około 220 kb pamieci, cały powyzszy kod zajmuje tyle ile wyzej napisałęm (2216 kb, choć jak przekonwertuje na czyste C to 2206 kb), lecz niestety dla mnie to jest 4 krotnie za dużo. co do zadania to jest to zadanie z opss.safo.biz -> http://opss.safo.biz/?menu=comp⊂=pr...0&prob=1017 a pamięć sprawdzam po przez ten serwis, (wczesniej probowałem uzywając polecenia "top" ale cos chyba mnie kłamał). Co do samego Wlasnie zrobilem programik ale na 2 tescie podaje zla odp - nie wiem co to za test - przyklady z forum sprawdzilem ale lipa - mam dobre wyniki a testu nie przechodzi prog. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Karlik Napisano Listopad 3, 2007 Zgłoszenie Share Napisano Listopad 3, 2007 To ja powiem tak: to trzeba zrobić inaczej, ponieważ nie przeskoczysz tego ograniczenia pamięci. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
MitS Napisano Listopad 4, 2007 Autor Zgłoszenie Share Napisano Listopad 4, 2007 To ja powiem tak: to trzeba zrobić inaczej, ponieważ nie przeskoczysz tego ograniczenia pamięci. No fajnie, tylko stwierdzenie "zrobić inaczej" jest troszke mało precyzyjne, masz może jakiś pomysł w jaki inny sposob mozna zrobic te zadanie (czy uzywac tablic w ogole ? itp.) Wlasnie zrobilem programik ale na 2 tescie podaje zla odp - nie wiem co to za test - przyklady z forum sprawdzilem ale lipa - mam dobre wyniki a testu nie przechodzi prog. Powyższy kod przechodzi 3 testy poprawnie na 4 tescie sie rypie bo przekracza limit pamieci Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Karlik Napisano Listopad 5, 2007 Zgłoszenie Share Napisano Listopad 5, 2007 Tak, mam to zadanie rozwiązane, ale nie powiem jak rozwiązać, bo nie o to w tym wszystkim chodzi. Tak czy siak na pewno nie potrzebujesz tak ogromnej tablicy Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się