👤

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ăspuns :

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);

}