Pagini recente » Cod sursa (job #1157074) | Cod sursa (job #1537593) | Cod sursa (job #1775724) | Cod sursa (job #1217045) | Cod sursa (job #118300)
Cod sursa(job #118300)
#include<string.h>
#include<fstream.h>
ifstream f("ordine.in");
ofstream g("ordine.out");
typedef int stiva[100];
stiva st;
char a[100],c[100],b[100],min[100];
int n;
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[i]==st[k])return 0;
if(k>=2)
if(a[st[k]]==a[st[k-1]])return 0;
return 1;
}
int solutie(int k)
{ return k==n;}
int sub()
{ for(int i=2;i<=n;i++)
if(a[st[i]-1]==a[st[i-1]-1])return 0;
return 1;}
void minim()
{ for(int i=1;i<=strlen(a);i++)b[i-1]=a[st[i]-1];
if(strcmp(b,min)<0)strcpy(min,b);}
void back(int k)
{ init(k);
while(succesor(k))
if(valid(k))
if(solutie(k))
{if(sub())minim();}
else back(k+1);
}
int main()
{ f.get(a,100);
strcpy(min,a);
n=strlen(a);
back(1);
g<<min;
return 0;}