Cod sursa(job #327242)

Utilizator ConsstantinTabacu Raul Consstantin Data 27 iunie 2009 18:37:15
Problema ADN Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#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;}