比赛 |
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);
}