HDU 1560 DNA sequence IDA*
来源:互联网 发布:淘宝城三期 开业时间 编辑:程序博客网 时间:2024/05/22 02:01
题意:有四个元素ACGT,DNA的序列就是由这四个元素组成的,现在有n个DNA串,现在寻找这样一个串,即最短的序列并且n个DNA串是其子串。
想法:首先,我们设要求的串是str,那么可以知道str的长度至少大于等于n个DNA串里面最长的那个。所以可以从此长度为基础进行搜索,我们可以整体进行搜索,即按照ACGT的顺序,来枚举str第一个要放置的字母,如果n个DNA串里面有,就把他们的位置枚举位置+1,然后是枚举str的第二个,一次类推。如果不成立str长度+1,继续枚举。有一个减枝就是,if:当前str枚举完的长度+h(所有DNA串留下的最大长度)>str之前设置的长度;then return false;
#include<iostream>#include<cstring>using namespace std;int n;char epl[10]="ACGT";int pos[15],length;struct node{ char str[10]; int len;}info[15];int Max(int a,int b){ if(a>b) return a; return b;}int h_len(){ int res=0; for(int i=1;i<=n;i++) { res=Max(res,info[i].len-pos[i]); } return res;}bool dfs(int Len){ if(Len+h_len()>length) return false; if(!h_len()) return true; int tmp[15]; for(int i=0;i<4;i++) { int mark=0; for(int j=1;j<=n;j++) tmp[j]=pos[j]; for(int j=1;j<=n;j++) { if(info[j].str[pos[j]]==epl[i]) { mark=1; pos[j]++; } } if(mark) { if(dfs(Len+1)) return true; for(int j=1;j<=n;j++) pos[j]=tmp[j]; } } return false;}int main(){ int t; cin>>t; while(t--) { cin>>n; length=0; for(int i=1;i<=n;i++) { cin>>info[i].str; info[i].len=strlen(info[i].str); pos[i]=0; length=Max(length,info[i].len); } while(1) { if(dfs(0)) break; length++; } cout<<length<<endl; } return 0;}[ Copy to Clipboard ] [ Save to File]
0 0
- HDU 1560 DNA sequence IDA*
- hdu 1560 DNA sequence(IDA*)
- HDU 1560 DNA sequence(IDA*~)
- HDU 1560 DNA sequence IDA*搜索
- hdu 1560 DNA sequence (IDA*)
- HDU-1560 DNA sequence(IDA*)
- hdu 1560 DNA sequence(IDA*)
- HDU 1560 DNA sequence(IDA*搜索)
- hdu oj 1560 DNA sequence(IDA*)
- HDU 1560 DNA sequence(IDA*)
- HDU 1560 DNA sequence(IDA*)
- HDU 1506 DNA sequence IDA*
- [HDOJ 1560][Vjudge 23158] DNA sequence [IDA*]
- HDU1560:DNA sequence(IDA*)
- hdu1560 DNA sequence (IDA*)
- HDU1560 DNA sequence (IDA*)
- HDU1560 DNA sequence IDA*
- HDU - 1560 DNA sequence
- 如何学好SQL
- 4.2 C++对象的创建与使用
- DOM和SAX
- Appium+Robotframework实现手机应用的自动化测试-2:安装条件
- 4.3 从面向过程到面向对象
- HDU 1560 DNA sequence IDA*
- 4.4 构造函数和析构函数
- js数组的操作
- send和recv函数解析(转)
- 网络编程中需要考虑的一些情况
- Visual Tracking 领域最新paper与code
- NPOI excel导入到table,excel2007
- ELK(elasticsearch+logstash+kibana) 日志分析
- get访问连接中文