Pagini recente » Cod sursa (job #1565370) | Cod sursa (job #2102948) | Cod sursa (job #1106233) | Cod sursa (job #397755) | Cod sursa (job #1722530)
#include <fstream>
#include <bitset>
using namespace std;
int x[20], n,k;
ifstream fin("permutari.in");
ofstream fout("permutari.out");
int cont(int pas) {
// testam daca elemntul pus pe pozitia curenta pas
// alaturi de elemtele puse pe pozitiile 1..pas-1
// poate duce la solutie
// consideram ca pe acelea le-am testa la randul lor cu aceeasi functie cont;
for (int i=1;i<pas;i++)
if (x[i] == x[pas])
return 0;
return 1;
}
void back(int pas) {
// aici folosim pas mai mare numarul de elemente ale unei solutii
//
if (pas > n) {
for (int i=1;i<=n;i++)
fout<<x[i]<<" ";
fout<<"\n";
return;
}
// forul parcurge toate elementele posibile la o anumita
// pozitie pas din solutie
for (int i=1;i<=n;i++) {
x[pas] = i;
if ( cont(pas) == 1 ) {
// daca elementul incercat pe pozita pas poate duce la solutie alaturi de
// cel eincercate deja pe pozitiile 1..pas-1
back(pas+1);
}
}
}
int main () {
fin>>n>>k;
back(1);
return 0;
}