Cod sursa(job #1011026)

Utilizator bghimisFMI Ghimis Bogdan bghimis Data 16 octombrie 2013 08:46:27
Problema Generare de permutari Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
using namespace std;

ifstream in("permutari.in");
ofstream out("permutari.out");

int v[9], n;

bool solutie(int k)
{
  if(k == n + 1)
    return true;
  return false;
}

void afisare()
{
  for(int i = 1; i <= n; i++)
    out << v[i] << " ";
  out << endl;
}

void init(int k)
{
  v[k] = 0;
}

bool succesor(int k)
{
  if(v[k] < n)
    {
      v[k]++;
      return true;
    }
  return false;
}

bool valid(int k)
{
    for(int i = 1; i < k; i++)
        if (v[k] == v[i])
            return false;

    if (k > 1)
        if (v[k] < v[k - 1])
            return true;

  return true;
}

void bkt(int k)
{
  if (solutie(k))
    afisare();
  else
    {
      init(k);
      while (succesor(k))
	if (valid(k))
	  bkt(k + 1);
    }
}

int main()
{
  in >> n;

  bkt(1);

  in.close();
  out.close();
  return 0;
}