Răspuns :
Răspuns:
#include <iostream>
using namespace std;
int n,v[20],sol[20];
void afis()
{
for(int j=1;j<=n;j++)
{
cout<<sol[j]<<' ';
}
cout<<'\n';
}
bool ok(int i)
{
if(i==1) return true;
if(sol[i]<0 and sol[i-1]<0) return false;
for(int j=1;j<i;j++)
{
if(sol[i]==sol[j]) return false;
}
return true;
}
void bkt(int i)
{
for(int j=1;j<=n;j++)
{
sol[i]=v[j];
if(ok(i))
{
if(i==n) afis();
else bkt(i+1);
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>v[i];
bkt(1);
return 0;
}
Explicație:
afis - functie de afisare a solutiilor
ok - functie care testeaza daca elementele solutiei gasite sunt bune
bkt - functia propriu-zisa de backtracking care aseaza elementele in vectorul solutie
Vă mulțumim că ați vizitat platforma noastră dedicată Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, vă rugăm să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la lista de favorite!