Cod sursa(job #1005849)

Utilizator danutbodbodnariuc danut danutbod Data 5 octombrie 2013 22:25:37
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 2.48 kb
//#include <fstream> //permutari infoarena var I 80p(timp depasit)
//using namespace std;
//ifstream f("permutari.in");
//ofstream g("permutari.out");
//int a[100], n, i, k;
//void afisare(int i){
//  int j;
//  for(j=1;j<=i;j++)
//      g<<a[j]<<" ";
//  g<<endl;
//}
//int valid(int i){
//  int j;
//  for(j=1;j<i;j++)
//   if(a[i]==a[j]) return 0;
//  return 1;
//}
//void back(int i){
//  int val;
//  for(val=1;val<=n;val++){
//      a[i]=val;
//      if(valid(i))
//          if(i==n) afisare(i);
//          else back(i+1);}
//}
//int main()
//{
//    f>>n;
//    back(1);
//    return 0;
//}
#include <fstream>   //permutari infoarena var II 100p
using namespace std; //(fara valid-dar cu vector de viz)
ifstream f("permutari.in");
ofstream g("permutari.out");
int a[100], n, i, k,viz[100];
void afisare(int i){
  int j;
  for(j=1;j<=i;j++)
      g<<a[j]<<" ";
  g<<'\n';
}
void back(int i){
  int j;
  for(j=1;j<=n;j++){
      if(viz[j]==0){
          viz[j]=1;
          a[i]=j;
          if(i==n) afisare(i);
            else back(i+1);
          viz[j]=0;
     }
}}
int main()
{
    f>>n;
    back(1);
    return 0;
}
//#include <fstream>
//#include <cmath>
//
//using namespace std;
//ifstream f("combinari.in");
//ofstream g("combinari.out");
//int n, k, a[19];
//
//void init (int l) {
//  a[l] = l-1;
//}
//
//bool succesor (int l) {
//  a[l]++;
//  return a[l] < n-(k-l)+1;
//}
//
//bool valid (int l) {
//
//    return a[l-1] < a[l];
//}
//
//bool sol (int l) {
//  return l == k; // Am completat toate cele n locuri?
//}
//
//void tip () {
//  int i;
//
//  for (i = 1; i <= k; i++)
//    g << a[i] << ' ';
//  g << endl;
//}
//
//void bt (int l) {
//  init (l);           // initializare
//  while (succesor(l)) // cat timp avem un succesor
//    if (valid(l))     // Sunt indeplinite conditiile?
//      if (sol(l))     // Avem o solutie completa?
//        tip();        // Prezentam solutia.
//      else            // Nu?
//        bt(l+1);      // Trecem la nivelul urmator.
//}
//int main()
//
//{
//    f>>n>>k;
//    bt(1);
//    return 0;
//}
//#include <fstream>
//using namespace std;
//ifstream f("submultimi.in");
//ofstream g("submultimi.out");
//int main()
//{
//    int i,j,lim,n;
//    f>>n;
//    lim=1<<n;
//    for(i=1;i<lim;i++)
//    {
//        for(j=1;j<=n;j++)
//            if(i&(1<<(j-1)))
//                g<<j<<" ";
//        g<<'\n';
//    }
//    return 0;
//}