题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1560

思路:关键是启发式函数h()的构造,我们可以这样想:每次给主串增加一个字符和字符串的最后一位比较,如果相同,这个字符串的长度减一。构造h()为当前所有字符串中长度最长的。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; char map[][];
char str[]="ACGT";
int len[];
int n,maxdeep; bool Judge()
{
int maxlen=;
for(int i=;i<n;i++)maxlen=max(maxlen,len[i]);
return maxlen==;
} int Get_H()
{
int maxlen=;
for(int i=;i<n;i++)maxlen=max(maxlen,len[i]);
return maxlen;
} bool IDA_star(int deep)
{
if(deep==maxdeep)return Judge();
if(Get_H()+deep>maxdeep)return false; int tmp_len[];
for(int i=;i<;i++){
bool flag=false;
for(int j=;j<n;j++){
tmp_len[j]=len[j];
if(len[j]==)continue;
if(map[j][len[j]-]==str[i]){
len[j]--;
flag=true;
}
}
if(flag){
if(IDA_star(deep+))return true;
}
for(int j=;j<n;j++)len[j]=tmp_len[j];
}
return false;
} int main()
{
int _case;
scanf("%d",&_case);
while(_case--){
scanf("%d",&n);
for(int i=;i<n;i++){
scanf("%s",map[i]);
len[i]=strlen(map[i]);
}
for(maxdeep=; ;maxdeep++){
if(IDA_star())break;
}
printf("%d\n",maxdeep);
}
return ;
}

hdu 1560(IDA*)的更多相关文章

  1. HDU 1560 IDA*搜索

    用N个串中找到最短的公共串(不要求连续,仅仅要相对位置一样就可以) 迭代加深搜索就可以 剪枝:当前的深度+最少还有加深的深度是否大于限制的长度,若是,则退回. #include "stdio ...

  2. HDU 1560 DNA sequence(DNA序列)

    HDU 1560 DNA sequence(DNA序列) Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K  ...

  3. HDU 1560 DNA sequence (IDA* 迭代加深 搜索)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1560 BFS题解:http://www.cnblogs.com/crazyapple/p/321810 ...

  4. HDU 1560 DNA sequence(IDA*)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1560 题目大意:给出n个字符串,让你找一个字符串使得这n个字符串都是它的子串,求最小长度. 解题思路: ...

  5. DNA sequence HDU - 1560(IDA*,迭代加深搜索)

    题目大意:有n个DNA序列,构造一个新的序列,使得这n个DNA序列都是它的子序列,然后输出最小长度. 题解:第一次接触IDA*算法,感觉~~好暴力!!思路:维护一个数组pos[i],表示第i个串该匹配 ...

  6. IDA*、剪枝、较难搜索、扫描——DNA sequence HDU - 1560

    万恶之源 翻译 题意就是给出N个DNA序列,要求出一个包含这n个序列的最短序列是多长 这是一道搜索题,为什么呢?从样例可以感受到,我们应该从左往右"扫描",从n个DNA序列中取出某 ...

  7. HDU 1560 DNA sequence A* 难度:1

    http://acm.hdu.edu.cn/showproblem.php?pid=1560 仔细读题(!),则可发现这道题要求的是一个最短的字符串,该字符串的不连续子序列中包含题目所给的所有字符串 ...

  8. hdu 1560 DNA sequence(搜索)

    http://acm.hdu.edu.cn/showproblem.php?pid=1560 DNA sequence Time Limit: 15000/5000 MS (Java/Others)  ...

  9. hdu 1560 DNA sequence(迭代加深搜索)

    DNA sequence Time Limit : 15000/5000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total ...

随机推荐

  1. LDAP编辑器 LDAPAdmin

    LDAPAdmin 是一个在 Windows 用来编辑 LDAP 账户信息的管理工具,采用 Delphi 开发.

  2. 转载【linux】Linux学习之CentOS6.x+7.x---网卡的配置

    转载至:http://www.cnblogs.com/smyhvae/p/3932903.html [正文] Linux系统版本:Centos 6.5 Linux系统版本:Centos 7 目的:将c ...

  3. 强制关机后导致VBOX(4.2.16 r86992)的虚拟机不可使用问题的解决MEMO

    上周六晚上由于有急事,就强制关机,导致今天晚上用VirtualBox(4.2.16 r86992)时,虚拟机上写着不可使用. 显示异常Message如下: D:\tinderbox\win-4.2\s ...

  4. 利用pandas进行数据分析之二:DataFrame与Series数据结构对比

    Series与DataFrame对比学习 文章为本人原创,未经同意请勿转载,http://www.cnblogs.com/smallcrystal/ Series:构建的方法,一组数组(列表或元组), ...

  5. C++:模板友元

    模板友元函数在类内声明类外定义时都必须加模板前缀,另外模板要写在一个文件内 // generates undefined error for the operator<< function ...

  6. mysql group replication 安装&配置详解

    一.原起: 之前也有写过mysql-group-replication (mgr) 相关的文章.那时也没有什么特别的动力要写好它.主要是因为在 mysql-5.7.20 之前的版本的mgr都有着各种各 ...

  7. Rigidbody-ClosestPointOnBounds测试

    可见是Collider的Bounds

  8. docker容器跑tomcat遇到的坑

    使用docker容器跑tomcat,由于同一个宿主机上跑了多个容器,再加上宿主机本身跑了很多进程,导致系统总的进程数达到了8000+,而容器中tomcat的启动脚本中会调用自带的setenv.sh,在 ...

  9. Machine Learning—The k-means clustering algorithm

    印象笔记同步分享:Machine Learning-The k-means clustering algorithm

  10. Windows Phone 性能优化(一)

    在实际的项目开发过程中,应用的性能优化是一个永恒的话题,也是开发者群里最常讨论的话题之一,我在之 前的公司做 wp项目时,也遇到过性能的瓶颈.当页面中加载的内容越来越多时,内存涨幅非常明显(特别是 一 ...