比赛 20120330 评测结果 AAAAAAAAAA
题目名称 字符串子串 最终得分 100
用户昵称 QhelDIV 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-03-30 22:00:52
显示代码纯文本
#include <fstream>
#include <cstdlib>
#include <string>
using namespace std;
ifstream fin("substring.in");
ofstream fout("substring.out");
string S0,S1,Max;bool flag[10000];
class Node
{
public:
	string st;
}S[10000];
int N,L1,L2,L;
void Initialize()
{
int i;	
	fin>>N;
	for(i=1;i<=N;i++)fin>>S[i].st;
}

void DFS(int Pos)
{
int i;string SDF;
	if(Pos==N)
	{
		L1=S1.length();L2=Max.length();L=min(L1,L2);
		for(i=0;i<L;i++)
		{
			if(S1[i]<Max[i]) {Max=S1;return;}
			if(S1[i]>Max[i]) return;
		}
		if(L1>L2)	{Max=S1;return;}
		else		return;
		
	}
	for(i=1;i<=N;i++)
		if(!flag[i])
		{
			flag[i]=true;
			SDF=S1;
			S1+=S[i].st;
			DFS(Pos+1);	
			flag[i]=false;
			S1=SDF;
		}
}

int main()
{
	Initialize();
		
	DFS(0);
	
	fout<<Max<<endl;
	fin.close();fout.close();return 0;
}