Cod sursa(job #121972)

Utilizator adrianaqtreus adriana adrianaqt Data 10 ianuarie 2008 16:23:13
Problema Ordine Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb

#include<string.h>
#include<fstream.h>
ifstream f("ordine.in")
ofstream g("ordine.out");
typedef int stiva[100];
stiva st;
int n,q;
char a[100],min[100],b[100];
void init(int k)
{st[k]=0;}

int succesor(int k)
{if(st[k]<n){st[k]++;
	      return 1;}
 else return 0;
}
int valid(int k)
{for(int i=1;i<k;i++)
if(st[k]==st[i])return 0;
if(k>1)
if(a[st[k]-1]==a[st[k-1]-1])return 0;
}
int solutie(int k)
{return k==n;}


void back(int k)
{ init(k);
    while(succesor(k))
    if(valid(k))
    if(solutie(k))
    {q=-1;
    for(int i=1;i<=n;i++)
b[++q]=a[st[i]-1];
    if(strcmp(b,min)<0)
       strcpy(min,b);}
       else back(k+1);
}
int main()
{ f.get(a,100);
n=strlen(a);
strcpy(min,a);
back(1);
g<<min;
return 0;}