【poj 1699】Best Sequence 题意&题解&代码(C++)
来源:互联网 发布:福建知鱼科技有限公司 编辑:程序博客网 时间:2024/05/01 03:41
题目链接:
http://poj.org/problem?id=1699
题意:
给出T组数据,每组数据n个字符串,要求将它按题示图片的方法组合成一个最短的字符串,求出这个最短的字符串的长度。
题解:
预处理两两相接时的最长重合长度,然后裸地暴搜,剪枝就是当前长度大于等于已经搜到的最优答时,就不搜了。
代码:
#include<iostream>#include<algorithm>#include<string.h>#include<stdio.h>using namespace std;int ans,T,n,vis[11],len[11],dou[11][11];char s[11][25];void pre()//预处理,超暴力的预处理,也可kmp,反正n小于10乱搞就行{ int flag=0; for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) { for (int l=0;l<=min(len[i],len[j]);l++) { flag=0; for (int x=0,y=len[j]-l;x<l;x++,y++) if (s[i][x]!=s[j][y]) {flag=1;break;} if (!flag) dou[j][i]=l; } }}void dfs(int x,int dep,int sum){ if (sum>=ans) return ;//剪枝 if (dep==n) { ans=min(ans,sum); return ; } for (int i=1;i<=n;i++) if (!vis[i]) { vis[i]=1; dfs(i,dep+1,sum+len[i]-dou[x][i]); vis[i]=0; }}int main(){ scanf("%d",&T); while(T--) { scanf("%d",&n); for (int i=1;i<=n;i++) { scanf("%s",s[i]); len[i]=strlen(s[i]); vis[i]=0; } pre(); ans=11*25; for (int i=1;i<=n;i++) { vis[i]=1; dfs(i,1,len[i]); vis[i]=0; } printf("%d\n",ans); }}
0 0
- 【poj 1699】Best Sequence 题意&题解&代码(C++)
- 【POJ 2778】DNA Sequence 中文题意&题解&代码(C++)
- 【poj 2352】Stars 题意&题解&代码(C++)
- 【poj 1724】ROADS 题意&题解&代码(C++)
- 【poj 1925】Spiderman 题意&题解&代码(C++)
- 【poj 3368】Frequent values 题意&题解&代码(C++)
- 【poj 3321】Apple Tree 题意&题解&代码(C++)
- 【poj 1195】Mobile phones 题意&题解&代码(C++)
- 【poj 1703】Find them, Catch them 题意&题解&代码(C++)
- 【poj 2492】A Bug's Life 题意&题解&代码(C++)
- 【poj 2892】Tunnel Warfare 题意&题解&代码(C++)
- 【poj 2331】Water pipe 题意&题解&代码(C++)
- 【poj 2286】The Rotation Game 题意&题解&代码(C++)
- 【poj 3373】Changing Digits 题意&题解&代码(C++)
- 【poj 1691】Painting A Board 题意&题解&代码(C++)
- 【poj 1054】The Troublesome Frog 题意&题解&代码(C++)
- 【poj 3280】 Cheapest Palindrome 题意&题解&代码(C++)
- 【poj 2948】Martian Mining 题意&题解&代码(C++)
- 《第一行代码》随时随地退出程序
- arm-linux内存管理学习笔记(2)-内核临时页表的建立
- git 代码合并
- [Ant][StartWithAnt] 第七章 Ant扩展包ant-contrib的使用
- 第五周项目3-时间类
- 【poj 1699】Best Sequence 题意&题解&代码(C++)
- cocos2d-js:调用scheduleUpdate()不执行update()方法的解决办法
- 使用OpenCV实现分水岭算法
- 有趣的有趣的家庭菜园
- Extjs6问题——grid不显示数据
- ReactNative学习十二-React-Native-Viewpager
- IOS设计模式-单例模式
- Android IntentService完全解析 当Service遇到Handler
- How to delete PACKAGE from HANA studio