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

Utilizând metoda backtracking, sunt generate în ordine crescătoare toate numerele de 3 cifre, astfel încât cifrele sunt în ordine crescătoare, iar cifrele aflate pe poziţii consecutive sunt de paritate diferită. Ştiind că primele trei soluţii generate sunt, în această ordine, 123, 125, 127, scrieţi în ordine crescătoare, separate prin câte un spațiu toate numerele generate care au suma cifrelor egală cu 12.

Răspunsuri la întrebare

Răspuns de andrei750238
2

Solutie : 129 147 345

Program C++ Backtracking  :

#include <iostream>

using namespace std;

int solutie[3];

void bkt(int lvl) {

//Daca e solutie afiseaza

if (lvl == 3 && solutie[0] + solutie[1] + solutie[2] == 12) cout << solutie[0] << solutie[1] << solutie[2] << " ";

//Altfel construieste cifra noua

else {

 //Daca e prima pozitie

 if (lvl == 0) {

  for (solutie[0] = 1; solutie[0] <= 9; solutie[0]++) bkt(1);

 }

 //Altfel

 else {

  for (solutie[lvl] = solutie[lvl - 1] + 1; solutie[lvl] <= 9; solutie[lvl] += 2) bkt(lvl + 1);

 }

}

}

int main() {

bkt(0);

}

Alte întrebări interesante