HDU 1560 IDA*(迭代加深搜索)
来源:互联网 发布:中国的社交网络有哪些 编辑:程序博客网 时间:2024/05/22 21:02
题意:
N个序列,只可能由ACGT组成。求最短公共序列。
题解:
暴力打表肯定超时。采用迭代加深搜索可以解决问题。迭代加深搜索其实就是有界的深度优先搜索。可以设置上界从1开始进行搜索(也就是假设最短公共序列的长度为1)。如果当前公共序列长度+某一序列未访问点的长度>上界,则返回Flase,并增加上界。直到所有序列的所有字符都已经被访问为止。
代码:
#include <iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<vector>#include<cmath>#include<queue>#include<string>#define INF 1e9using namespace std;char seq[10][10];int len[10];char dna[4]={'A','C','G','T'};int dep=1;int n;bool ida(int now){ if(now>dep) return false; for(int i=0;i<n;i++){ if(strlen(seq[i])-len[i]+now>dep) return false; } bool all=true; for(int i=0;i<n;i++){ if(len[i]<strlen(seq[i])){ all=false; break; } } if(all) return true; for(int i=0;i<4;i++){ int tmp[10]; memcpy(&tmp,&len,sizeof(len)); bool flag=false; for(int j=0;j<n;j++){ if(seq[j][len[j]]==dna[i]){ len[j]++; flag=true; } } if(flag){ if(ida(now+1)){ return true; } memcpy(&len,&tmp,sizeof(len)); } } return false;}int main(){ int kase; scanf("%d",&kase); while(kase--){ memset(len,0,sizeof(len)); scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%s",&seq[i]); } dep=1; while(true){ if(ida(0)) break; dep++; } printf("%d\n",dep); } return 0;}
阅读全文
0 0
- HDU 1560 IDA*(迭代加深搜索)
- hdu 1560 IdA* 迭代加深A星搜索
- 埃及分数 迭代加深搜索 IDA*
- 迭代加深搜索 (IDA*)
- POJ 2286 HDU 1667 ZOJ 2396 The Rotation Game IDA*迭代加深搜索
- POJ 2286/HDU 1667 The Rotation Game 搜索-IDA*+迭代加深
- uva 11212 - Editing a Book(迭代加深搜索 IDA*) 迭代加深搜索
- 深度优先搜索 迭代加深搜索 hdu 1560
- POJ 2286 The Rotation Game 搜索-IDA*+迭代加深
- 埃及分数问题-迭代加深搜索与IDA*算法
- IDA*,迭代加深搜索(编辑书稿,uva 11212)
- hdu1667-IDA*-迭代加深搜索 A*算法
- 迭代加深搜索--IDA*--uva11212 Editing a book
- 迭代加深搜索IDA*---uva1343 the rotation game
- hdu 1560 DNA sequence(迭代加深搜索)
- hdu 1560 DNA sequence(迭代加深搜索)(经典题)
- hdu 1560 DNA sequence(迭代加深搜索)
- Hdu 1560 解题报告 迭代加深搜索
- IP地址判断
- Linux服务器添加站点域名管理
- [leetcode javascript解题]N-Queens
- Servlet解析
- python requests post 文件,图片
- HDU 1560 IDA*(迭代加深搜索)
- 完美的素数
- npm WARN enoent ENOENT: no such file or directory, open 'E:\Program Files\nodejs \package.json' npm
- jquery入口的三种方法
- 获取App启动时间
- 《神经网络设计》读书笔记——性能优化(三)
- FabricView带浮动按钮的画布
- 35 个 Java 代码性能优化总结
- 北大方正臭名远扬,方正人寿岂能盈利?