Cod sursa(job #114088)

Utilizator marinMari n marin Data 12 decembrie 2007 17:08:40
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>
#define MAX 1000001

long int v[130],n=0;
char x[MAX];
int i;
char c;
int ok=0;

void back(long int k){
  char i;
  if (k==n+1){
    FILE *g = fopen("ordine.out","w");
    for (i=1;i<k;i++)
      fprintf(g,"%c",(char)x[i]);
    fclose(g);
    ok=1;
  }
  if (ok==1)
    return;
  for (i='a';i<='z';i++) {
    if (v[i]!=0) {
      if (k==1) {
	v[i]--;
	x[k]=i;
	back(k+1);
	v[i]++;
      } else if (x[k-1]!=i){
	       v[i]--;
	       x[k]=i;
	       back(k+1);
	       v[i]++;
	     }
    }
  }
}


void main(){
  for (i='a';i<='z';i++)
    v[i]=0;
  FILE *f = fopen("ordine.in","r");
  while (!feof(f)) {
    fscanf(f,"%c",&c);
    if ((c>='a')&&(c<='z')) {
      v[c]++;
      n++;
    }

  }
  fclose(f);
  ok=0;
  back(1);

}