Cod sursa(job #1011041)

Utilizator bghimisFMI Ghimis Bogdan bghimis Data 16 octombrie 2013 09:20:36
Problema Generare de permutari Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb

#include "stdafx.h"
#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 << '\n';

}

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

  out.close();
  return 0;
}