http://poj.org/problem?id=1699

题意:给你n个长度为L的序列,求包含这几个序列的最短长度。

先预处理每两个序列之间的关系,然后dfs枚举就行。

 #include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 500
using namespace std;
const int inf=<<; char str[maxn][maxn];
int c[maxn][maxn];
int n;
bool vis[maxn]; int make_l(int s,int t)
{
int cnt=;
int k1=strlen(str[s]);
int k2=strlen(str[t]);
for(int i=; i<=k1&&i<=k2; i++)
{
bool flag=false;
for(int j=; j<i; j++)
{
if(str[s][k1-i+j]!=str[t][j])
{
flag=true;
break;
}
}
if(!flag) cnt=i;
}
return k1-cnt;
} int dfs(int src,int step)
{
int sum=inf;
if(step==n)
{
int kl=strlen(str[src]);
return kl;
}
for(int i=; i<=n; i++)
{
if(!vis[i])
{
vis[i]=true;
int sum1=c[src][i];
sum1+=dfs(i,step+);
vis[i]=false;
sum=min(sum,sum1);
}
}
return sum;
} int main()
{
int t1;
scanf("%d",&t1);
while(t1--)
{
scanf("%d",&n);
for(int i=; i<=n; i++)
{
scanf("%s",str[i]);
}
memset(c,,sizeof(c));
for(int i=; i<=n; i++)
{
for(int j=; j<=n; j++)
{
if(i==j) continue;
c[i][j]=make_l(i,j);
}
}
/*for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
printf("%d ",c[i][j]);
}
printf("\n");
}*/
memset(vis,false,sizeof(vis));
int ans=inf;
for(int i=; i<=n; i++)
{
vis[i]=true;
ans=min(ans,dfs(i,));
vis[i]=false;
}
printf("%d\n",ans);
}
return ;
}

最新文章

  1. iOS-APP提交上架流程(新手必看!2016年3月1日最新版)
  2. WPF中实例化Com组件,调用组件的方法时报System.Windows.Forms.AxHost+InvalidActiveXStateException的异常
  3. JavaScript RegExp 对象(来自w3school)
  4. How to Use JUnit With JMeter
  5. jQuery简单邮箱验证
  6. 证明:寝室分配问题是NPC问题
  7. iOS 添加阴影后 屏幕卡顿 抖动
  8. 函数page_cur_search_with_match
  9. android79 Fragment生命周期
  10. AE-分享&lt;学习后,制作的视频实例&gt;小视频-与大家交流!
  11. php中对MYSQL操作之批量运行,与获取批量结果
  12. String的Split方法的用法与要注意事项
  13. Visual Studio 2013 IIS Explorer 停止调试继续访问站点
  14. SD卡读写扇区注意事项(转)
  15. java加密算法入门(一)-算法概念及单向加密
  16. ubuntu + 不识别无线网卡简易处理方式 + 需有线联网
  17. STL—之迭代器,文中推荐的博客很给力
  18. linux redis 主从复制
  19. --num 与 num-- 的区别
  20. 18华南理工校赛 K 小马哥的超级盐水

热门文章

  1. Latch-up 閂鎖效應 &amp; 靜電放電模式
  2. Auto Install Workflow Manager 1.0
  3. sql server数据建表
  4. 转:Asp.Net MVC中DropDownListFor的用法
  5. bzoj1751 [Usaco2005 qua]Lake Counting
  6. Javascript或jQuery方法产生任意随机整数
  7. Nim Game 解答
  8. Binary Search Tree DFS Template
  9. 深入理解Scala的隐式转换系统
  10. linux下git使用记录1 git 提交