Pagini recente » Cod sursa (job #1890479) | Cod sursa (job #2212194) | Cod sursa (job #2550077) | Cod sursa (job #2399578) | Cod sursa (job #327242)
Cod sursa(job #327242)
#include<fstream>
#include<string.h>
#include<stdio.h>
using namespace std;
int v[20],viz[20],n,ok;
char a[20][30010],sol[30010];
void citire(){
int i;
ifstream f("adn.in");
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
}
int cond(){
char *x;
int i,ok=1;
for(i=1;i<=n;i++)
{x=a[v[i]];ok=0;
for(;x;x++)
if(strstr(x,a[v[i+1]])==a[v[i+1]]){ok=1;break;}
if(!ok)return 0;}
return 1;
}
void afisare(){
int i;
char *x;
freopen("adn.out","w",stdout);
for(i=1;i<=n;i++)
{x=a[v[i]];
for(;x;x++)
if(strstr(x,a[v[i+1]])==a[v[i+1]])break;
else
printf("%c",x);
}
}
void back(int lvl){
if(lvl==n){
if(cond()){afisare();ok=1;return ;}
}
else
if(!ok){
int i;
for(i=1;i<=n;i++)
if(!viz[i])
{v[lvl+1]=i;viz[i]=1;
back(lvl+1);
if(ok)return ;
viz[i]=0;}
}
}
int main(){
citire();
back(0);
return 0;}