Cod sursa(job #353815)

Utilizator udrescu_cristiUdrescu Cristian udrescu_cristi Data 6 octombrie 2009 12:53:34
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<iostream.h>
#include<stdio.h>

 int st[100],n;

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

  int sucesor(int k)
  {
   if(st[k]<n)
   {
    st[k]++;
    return 1;
    }
   else return 0;
   }

 int valid(int k)
 {
  int i,t=1;
  for(i=1;i<=k-1;i++)
  if(st[k]==st[i]) t=0;
  return t;
  }

  int solutie(int k)
  {
   return k==n+1;
   }

   void tipar()
   {
    for(int i=1;i<=n;i++)
     printf("%d ",st[i]);
     printf("\n");
    }

    void back(int k)
    {
    if(solutie(k)) tipar();
    else
    {
     init(k);
     while (sucesor(k))
     if(valid(k)) back(k+1);
     }
      }

      int main()
      {
	freopen("permutari.in","r",stdin);
	freopen("permutari.out","w",stdout);
	 scanf("%d\n",&n);
       back(1);
       return 0;
       }