HDU 1560DNA sequence
来源:互联网 发布:google tensorflow应用 编辑:程序博客网 时间:2024/06/05 14:59
DNA sequence
Time Limit : 15000/5000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 8 Accepted Submission(s) : 1
Problem Description
The twenty-first century is a biology-technology developing century. We know that a gene is made of DNA. The nucleotide bases from which DNA is built are A(adenine), C(cytosine), G(guanine), and T(thymine). Finding the longest common subsequence between DNA/Protein sequences is one of the basic problems in modern computational molecular biology. But this problem is a little different. Given several DNA sequences, you are asked to make a shortest sequence from them so that each of the given sequence is the subsequence of it.
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.
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.
Input
The first line is the test case number t. Then t test cases follow. In each case, the first line is an integer n ( 1<=n<=8 ) represents number of the DNA sequences. The following k lines contain the k sequences, one per line. Assuming that the length of any sequence is between 1 and 5.
Output
For each test case, print a line containing the length of the shortest sequence that can be made from these sequences.
Sample Input
14ACGTATGCCGTTCAGT
Sample Output
8
Author
LL
Source
HDU 2006-12 Programming Contest
找到最短的DNA序列 其子序列包含题意所给的DNA
IDA* 估价函数为最长剩余DNA数量
#include<iostream>#include<cstdio>#include<cstring>#include<queue>#include<cmath>#include<string>#include<vector>#include<algorithm>#include<map>#include<set>#define inf 1<<30#define LL long long#define maxn 1<<24using namespace std;char str[10][10];//保存DNAint l[10];int t,n;int tlen;bool flag;int get_h(int * a) //估价函数{ int ans=0; for(int i=0; i<n; i++) { ans=max(ans,a[i]); } return ans;}void dfs(int len,int * a){ if(flag) return ; if(get_h(a)>len) return ;//预估值小于最优估计值 if(len==0) //找到序列 { flag=true ; return ; } bool vis[10]; memset(vis,false ,sizeof(vis)); for(int i=0; i<n; i++) { if(a[i]==0||vis[i]) continue ; int ee[10]; for(int ii=0; ii<n; ii++) ee[ii]=a[ii]; vis[i]=true ; char ch=str[i][l[i]-a[i]]; ee[i]--; for(int j=i+1; j<n; j++) { if(ee[j]==0||vis[j]) continue ; if(str[j][l[j]-a[j]]==ch) { vis[j]=true ; ee[j]--; } } dfs(len-1,ee); } return ;}int main(){ scanf("%d",&t); while(t--) { tlen=0; flag=false ; scanf("%d",&n); int ee[10]; for(int i=0; i<n; i++) { scanf("%s",str[i]); ee[i]=strlen(str[i]); l[i]=ee[i]; tlen=max(ee[i],tlen); } while(1) { dfs(tlen,ee); if(flag) break; tlen++; } printf("%d\n",tlen); }}
0 0
- HDU - 1560 DNA sequence
- HDU-1560 DNA sequence
- HDU 1560DNA sequence
- HDU 1560 - DNA sequence
- HDU - 1560----DNA sequence
- HDU - 1560----DNA sequence
- HDU 1560 DNA sequence IDA*
- hdu 1560 DNA sequence(IDA*)
- HDU 1560 DNA sequence(IDA*~)
- HDU 1560 DNA sequence IDA*搜索
- HDU 1560 DNA sequence hh大神代码
- hdu 1560 DNA sequence (IDA*)
- 【搜索进阶】HDU 1560 DNA sequence
- HDU-1560 DNA sequence(IDA*)
- hdu 1560 DNA sequence(IDA*)
- HDU 1560 DNA sequence(BFS+hash)
- HDU 1560 DNA sequence(IDA*搜索)
- HDU 1560 DNA sequence(状压+搜索)
- (转)mongodb 解决 couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91 错误
- Activity生命周期
- iOS:KVO的概述与使用
- word2vec使用说明
- Favor库简述
- HDU 1560DNA sequence
- [iOS基础]从使用UIPopoverController到UIViewController弹出模态
- 如何手工释放linux内存
- 前期深入
- 在 Struts 2 中自定义支持 OGNL 的标签
- poj 2392 Space Elevator dp 多重背包
- 使用 RxAndroid 处理异步任务
- 自定义View绘制圆形进度条
- 人见人爱A-B