Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Schimbare bec far VW Touran 1T3

Ce parere aveti de viteza/ modul ...

Love Lies Bleeding - 2024

Cum sterg mails din Promotions
 Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Donez medicamente renale ptr pisica

Ce componenta e asta si ce ziceti...
 Dupa 20 ani de facultate, am uita...

Mobile.de ofera imprumut de bani ...

problema test grila

Digi24 a disparut de pe TV Lg
 Drept de proprietate intelectuala...

Jante noi shitbox

Trinitas TV 4K

Dacia 1316 cu 6 usi ...
 

Problemã secvențã

- - - - -
  • Please log in to reply
19 replies to this topic

#19
Cy_Cristian

Cy_Cristian

    Active Member

  • Grup: Members
  • Posts: 1,845
  • Înscris: 22.02.2009
Nu se executa nimic in gol. Invata sa faci debug corect. Pune doar cate o comanda/conditie pe linie. Dupa ce i=2, se verifica din nou conditia. Prima parte din conditie implica i si un sir. Acolo se produce OOB de care vorbeam. In mod norocos, nu-ti crapa programul. Dar astea sunt conditii de crapat. Faptul ca intamplator programul merge, nu inseamna ca e si corect.
Nu toate problemele au aceeasi complexitate. In cazul de fata se poate face intr-un timp relativ mai scurt.
Iti dau niste indicatii, nu chiar pseudo-cod de care amintea Marian. Insa am lasat deoparte cea mai complicata parte (si anume existenta 0-urilor la inceput, respectiv la sfarsit de sir).
Ne situam in cazul dat de Marian, cand numerele initiale au fost inlocuite cu log2 sau cu -1 in caz contrar.
Am pus doar ideea principala, fara alte verificari (element<-1).

- cat timp suma<tinta, avanseaza index_final si adauga elementul de la index_final
- cat timp suma>tinta, scade elementul de la index_initial si avanseaza index_initial

#20
Baggins

Baggins

    Member

  • Grup: Members
  • Posts: 264
  • Înscris: 09.10.2014
Nu vreau s-o fac mai eficientă deocamdată.
Vreau doar să înțeleg ce nu e bine la ce am făcut eu, că nu înțeleg.
Ok, dupa ce i=2, se verifică din nou, și? Nu mai intră pe while.

unsigned Secventa(long long x[], long n, unsigned k)
{
unsigned nr=0,s,start;
long i,exp[n];
for(i=0; i<n; i++)
	 if(isPowerOf2(x[i])) exp[i]=log2(x[i]);
	 else exp[i]=-1;
i=0;
while(i<n)
{
	 while(exp[i]==-1 && i<n) i++;
	 s=0; start=i;
	 while(exp[i]!=-1 && i<n && s<k)
	 {
		 s+=exp[i];
		 i++;
	 }
	 if(s==k) nr++;
	 i=start+1;
}
return nr;
}

Am ajuns la așa ceva, care cred că și ăsta produce fenomenul straniu.


p.s.
while (i < n){
while ((i < n) && (a[i] == 0)){
i = i + 1;
}
int inceput = i;
while ((i < n) && (a[i] > 0)){
i = i + 1;
}
if (i < n){
nr++;
int sfarsit = i - 1;
if (maxSf - maxInc <= sfarsit - inceput){
maxInc = inceput;
maxSf = sfarsit;
}
}

Și aici se produce OOB?

Edited by Baggins, 21 March 2017 - 18:12.


Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate