HDU 1560 DNA sequence(IDA*~)
2017-11-11 12:36
465 查看
这个题懵逼了很久的,因为我一直没弄懂结果序列是怎么找出来的,IDA*算法也是现学的,觉得A*和IDA*都好强哦,至少比单纯的BFS和DFS强不少==
以后这两个要多加练习!总感觉会有大用处。。
#include <cstdio>
#include <cstring>
#include <iostream>
#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];
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) 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(void) {
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;
}
以后这两个要多加练习!总感觉会有大用处。。
#include <cstdio>
#include <cstring>
#include <iostream>
#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];
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) 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(void) {
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(IDA*)
- Hdu1560 DNA sequence(IDA*)
- HDU 1560 DNA sequence(IDA*搜索)
- HDU1560 DNA sequence(IDA星) (E)
- 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 A* 难度:1
- HDU 1506 DNA sequence IDA*
- HDU - 1560----DNA sequence
- HDU - 1560 DNA sequence
- DNA sequence HDU - 1560
- HDU - 1560 DNA sequence 迭代加深搜索
- HDU - 1560----DNA sequence
- HDOJ 1560 DNA sequence 状压dp 或 IDA*
- HDU 1560 DNA sequence(BFS+hash)