深度优先搜索 迭代加深搜索 hdu 1560
来源:互联网 发布:武汉专业淘宝摄影 编辑:程序博客网 时间:2024/06/05 14:48
这道题题意:从n个串中找出一个最短的公共串(也许应该说序列吧,因为不要求连续,即只要保持相对顺序就好)。
所谓迭代加深搜索,就是限制DFS的深度,若搜不到答案,则加深深度,重新搜索,这样就防止了随着深度不断加深而进行的盲目搜索,而且,对于这种求最短长度之类的题目,只要找到可行解,即是最优解了。同时注意剪枝,每次DFS的时候,都要判断一下,当前的深度+最少还有加深的深度是否大于限制的长度,若是,则退回上一层状态。
#include<iostream>#include<algorithm>#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<vector>#include<stack>#include<map>#define maxn 10#define lson step<<1#define rson step<<1|1using namespace std;char DNA[4]={'A','C','G','T'};int n,deep,ans; string s[maxn];int max(int x,int y){if(x>y)return x;return y;}void dfs(int index,int len[]){if(ans!=-1)//已经搜到最优解 不必再往下搜return ;if(index>deep)//大于限制的深度,不用往下搜索{return ;}int maxx=0;//预计还要匹配的字符串的最大长度 for(int i=0;i<n;i++){maxx=max(s[i].size()-len[i],maxx);}if(index+maxx>deep) //剪枝 return ;if(maxx==0)//条件全部满足即为最优解 {ans=index;return ;}for(int i=0;i<4;i++){int pos[maxn];int flag=0;for(int j=0;j<n;j++){if(s[j][len[j]]==DNA[i])//表示该字母可以往下搜索{pos[j]=len[j]+1;flag=1;}elsepos[j]=len[j];}if(flag)dfs(index+1,pos);}}int main(){int T;cin>>T;while(T--){cin>>n;deep=0;//搜索深度 for(int i=0;i<n;i++){cin>>s[i];deep=max(deep,s[i].size());//找出最长的串的长度,作为初始时的迭代DFS的限制 } int pos[maxn];//记录n个字符串目前匹配到的位置 memset(pos,0,sizeof(pos));while(1){ans=-1;dfs(0,pos);if(ans!=-1)break;deep++;//加深迭代 }cout << ans << endl;}return 0;}
阅读全文
0 0
- 深度优先搜索 迭代加深搜索 hdu 1560
- 深度优先,广度优先和迭代加深搜索算法
- HDU 1560 IDA*(迭代加深搜索)
- 图搜索算法(深度优先搜索、迭代加深的深度优先搜索、广度优先搜索、代价一致搜索、A*搜索)
- 人工智能搜索算法(深度优先、迭代加深、一致代价、A*搜索)
- 迭代加深搜索
- 迭代加深搜索
- 搜索-迭代加深
- hdu 2485 迭代加深搜索
- hdu 1560 DNA sequence(迭代加深搜索)
- hdu 1560 IdA* 迭代加深A星搜索
- hdu 1560 DNA sequence(迭代加深搜索)(经典题)
- hdu 1560 DNA sequence(迭代加深搜索)
- Hdu 1560 解题报告 迭代加深搜索
- 迭代深度的深度优先搜索
- 迭代加深搜搜索
- poj3134迭代加深搜索
- 7.6迭代加深搜索
- leetcode_135. Candy ? 待解决
- C#获得C++字符串
- mongodb日志oplog解读
- css如何让两个并列的按钮 水平居中显示
- 利用dd命令制作ubuntu启动盘
- 深度优先搜索 迭代加深搜索 hdu 1560
- 高并发
- DFJSDLGH;DFHGJGJ
- velocity的学习记录之配置
- [编程题] 等差数列
- leetcode _581. Shortest Unsorted Continuous Subarray ? 待解决
- Eclipse中JS文件即使取消语法验证仍提示错误(图例教程)
- 编程语言
- 网站管理助手v4.0 创建站点流程图文教程