Informatică, întrebare adresată de Neverba, 8 ani în urmă

Cod in c++ (30 puncte)
Folosind metoda divide et impera, scrieți o funcție parimpar care să determine numărul de elemente pare și cele impare mai mici decât un număr k introdus de la tastatură.

Răspunsuri la întrebare

Răspuns de lucaciucandrei
1

COROANA TE ROG!!!

#include<iostream>

using namespace std;

int k,par,impar,i=0;

void parimpar(){

   while(i<k){

       if(i%2==0)

           par++;

       else

           impar++;

       i++;

       parimpar();

   }

}

int main(){

   cin>>k;

   parimpar();

   cout<<par<<' '<<impar;

   return 0;

}


andrei750238: Pai nu prea avem divide et impera...
lucaciucandrei: pai avem :)
andrei750238: In loc de "while" am putea avea la fel de bine un "if". Oricum codul din bucla se executa o singura data, apoi se apeleaza in mod recursiv.
andrei750238: Dar nu e problema. Pana la urma rezultatul e acelasi

Problema ar fi ca acest algoritm nu prea e divide et impera. Este recursivitate, dar nu indeplineste definitia pentru Divide Et Impera.

"Divide et impera se bazează pe principiul descompunerii problemei în două sau mai multe subprobleme (mai ușoare), care se rezolvă, iar soluția pentru problema inițială se obține combinând soluțiile subproblemelor."

Tu nu ai impartit problema in mai multe mai mici, doar ai apelat recursiv functia.
Alte întrebări interesante