比赛 20120330 评测结果 AAAAAAAAAA
题目名称 字符串子串 最终得分 100
用户昵称 Truth.Cirno 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-03-30 22:16:12
显示代码纯文本
#include <cstdio>
#include <cstring>
using namespace std;

struct type1
{
	int len;
	char ch[102];
}str[8];
struct type2
{
	char ch[802];
}sum,minsum;
int n,len;
bool used[8],flag;

void dfs(int num,int deep)
{
	used[num]=true;
	int i;
	for (i=0;i<str[num].len;i++)
		sum.ch[i+len]=str[num].ch[i];
	len+=str[num].len;
	if (deep==n-1)
	{
		if (!flag)
		{
			minsum=sum;
			flag=true;
		}
		else
		{
			if (strcmp(minsum.ch,sum.ch)>0)
				minsum=sum;
		}
	}
	else
	{
		for (i=0;i<n;i++)
			if (!used[i])
				dfs(i,deep+1);
	}
	len-=str[num].len;
	used[num]=false;
}

int main(void)
{
	freopen("substring.in","r",stdin);
	freopen("substring.out","w",stdout);
	int i;
	scanf("%d",&n);
	for (i=0;i<n;i++)
	{
		scanf("%s",&str[i].ch);
		str[i].len=strlen(str[i].ch);
	}
	for (i=0;i<n;i++)
		dfs(i,0);
	printf("%s\n",minsum.ch);
	return(0);
}