Pagini recente » Cod sursa (job #87677) | Cod sursa (job #2259952) | Cod sursa (job #2384781) | Cod sursa (job #2586798) | Cod sursa (job #121973)
Cod sursa(job #121973)
#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;}