hdu 1560 DNA sequence(IDA*)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1560
DNA sequence
For example, given "ACGT","ATGC","CGTT" and "CAGT", you can make a sequence in the following way. It is the shortest but may be not the only one.
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>using namespace std;int n;
char ch[10][10];
int len[10],want;
char dir[10]= {'A','C','G','T'};
int wei[10];//记录第i个序列正在使用第几个位置int get_h()
{int t=0;for (int i=1; i<=n; i++){t=max(t,len[i]-wei[i]);//得到当前情况下最长的未被匹配的长度}return t;
}int IDA(int dep)
{if(dep+get_h()>want)//当前长度+估测的长度比我想要的还大的话,就不必继续搜索{//cout<<get_h()<<endl;return 0;}if(dep==want)return 1;int tmp[10];for (int i=0; i<4; i++){int flag=0;memcpy(tmp,wei,sizeof(wei));//先存一下for (int j=1; j<=n; j++){if (ch[j][wei[j]]==dir[i])//当前的这一位符合{flag=1;//标记当前状态可以wei[j]++;}}if (flag){if(IDA(dep+1))//如果可以就继续搜索return 1;memcpy(wei,tmp,sizeof(tmp));//还原回来}}return 0;
}int main()
{int T;scanf("%d",&T);while (T--){int Max=0;scanf("%d",&n);for (int i=1; i<=n; i++){scanf("%s",ch[i]);len[i]=strlen(ch[i]);if (len[i]>Max)Max=len[i];}memset(wei,0,sizeof(wei));want=Max;//从最长序列开始查找while (1){if (IDA(0)){break;}want++;}printf ("%d\n",want);}return 0;
}
hdu 1560 DNA sequence(IDA*)相关推荐
- HDU 1560 DNA sequence(DNA序列)
HDU 1560 DNA sequence(DNA序列) Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- hud 1560 DNA sequence(IDA* 迭代加深搜索+估值函数)
传送门 题目: Problem Description The twenty-first century is a biology-technology developing century. We ...
- hdu 1560 DNA sequence(迭代加深搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1560 题意:从n个串中找出一个最短的公共串,,该公共串对于n个字符串不要求连续,即只要保持相对顺序就好 ...
- HDU - 1560 DNA sequence
给你最多8个长度不超过5的DNA系列,求一个包含所有系列的最短系列. 迭代加深的经典题.(虽然自己第一次写) 定一个长度搜下去,搜不出答案就加深大搜的限制,然后中间加一些玄学的减枝 //Twenty ...
- HDU 6078 Wavel Sequence (dp)
Description Have you ever seen the wave? It's a wonderful view of nature. Little Q is attracted to s ...
- HDU 6078 Wavel Sequence(dp)
Description 定义波浪序列:a1 > a2 < a3-,现在给出一个长度为n的序列a和一个长度为m的序列b,求a和b的公共波浪子序列个数 Input 第一行一整数T表示用例组数, ...
- EF中创建、使用Oracle数据库的Sequence(序列)功能
** 背景 ** 项目中订单号原来的生成规则由日期加随机数组成,后期需求决定将订单号生成规则更改为生成日期加当天当前订单数. 每天的订单数都是从0开始的,每生成一个订单,订单数就应该加1.订单数应该是 ...
- 易基因|不同DNA甲基转移酶(DNMT)在癌症发病机制中的作用: 深度综述
大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因. DNA甲基化是调控基因表达最重要的表观遗传机制之一.DNA甲基转移酶(DNA methyltransferases,DNMT)在基因组D ...
- hdu HDOJ 题目分类(转)
动态规划:2037 2054 2084 hdu题目分类(转) http://apps.hi.baidu.com/share/detail/17053154 1001 整数求和 水题 1002 C语言实 ...
- HDU 4634 Swipe Bo(搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4634 题意:有一个迷宫,包含墙.空白格子.起点S.终点E.方向格子(LRUD)和钥匙K.要求如下: ( ...
最新文章
- 算法学习之路|数位dp简要分析
- 拥抱开放计算标准 重构数据中心格局
- udp java_Java实现Udp网络编程
- cmake 安装_vscode不写一行配置,用cmake傻瓜式搭建C++编译调试环境
- java io 读取多个对象_Java IO系列(五):读写对象ObjectOutputStream和ObjectInputStream详解...
- [HEOI2016TJOI2016]排序(二分+线段树)
- 我的AWS开发人员考试未通过。 现在怎么办?
- ajax jinja,在向Flask发出jQuery AJAX请求后渲染Jinja
- 记录zedboard无法识别com的解决思路
- C#中Panel控件的使用
- oracle查询日期当天,oracle获取今天时间数据
- chrome运行 Android,告诉你如何在Chrome上运行Android应用!
- HoloView 在 jyputer lab/notebook 不显示总结
- Video标签的基本使用
- fopen和open的区别
- 利用Bettercap实现密码的嗅探
- 深度学习(DeepLearning)第一课
- mini210s启动出错
- 关于Qtdesigner中图像处理的一些踩过的坑:进程已结束,退出代码 -1073740791 (0xC0000409)
- 【软件测试】Python自动化软件测试算是程序员吗?
热门文章
- python当当图书信息抓取
- android app原型设计工具,手机端APP高仿真(UEUI)原型设计(完整版)
- 音视频开发之旅(41)-天空盒
- Oracle中的索引类型
- Win10系统Qt安装及配置
- CT影像数据(nrrd文件和dicm文件)的读取和预处理
- 显示器接口_显示器接口都有哪些?
- PMP考试提分必刷题
- 使用webgl(three.js)搭建一个3D智慧园区、3D建筑,3D消防模拟,web版3D,bim管理系统——第四课
- Java Lambda 映射 map