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
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
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Fizică,
8 ani în urmă
Engleza,
8 ani în urmă
Matematică,
9 ani în urmă
Chimie,
9 ani în urmă