hdu 2234+1560 IDA*
来源:互联网 发布:vivo手机库存软件 编辑:程序博客网 时间:2024/05/16 19:12
IDA* 基本框架 hdu 1560
hdu 2234 稍复杂的IDA*
代码思路清晰,故不多加注释了。
#include<cstdio>//hdu 1560#include<cstring>#include<cmath>#include<algorithm>#define MS(x,y) memset(x,y,sizeof(x))#define pi acos(-1.0)using namespace std;void fre(){freopen("t.txt","r",stdin);}typedef long long LL;typedef unsigned long long ULL;const int MOD = 1e9 + 7;const int inf = (1<<63)-1;const int MAXN = 4*(1e5)+1;const int eps = -(1<<30);char index[] = "AGCT";struct node{ char s[10]; int len;}a[10];int pos[10],ans,n;int get_h(){ int res = 0; for(int i = 0; i < n; ++i) { res = max(a[i].len - pos[i],res); } return res;}bool dfs(int step){ if(step+get_h() > ans) return 0; if(!get_h()) return 1; int i,j; int tem[10]; for(i = 0; i < 4; ++i) { int flag = 0; for(j = 0; j < n; ++j) tem[j] = pos[j]; for(j = 0; j < n; ++j) { if(a[j].s[pos[j]] == index[i]) { flag = 1; pos[j]++; } } if(flag) { if( dfs(step+1) ) return 1; for(j = 0; j < n; ++j) pos[j] = tem[j]; } } return 0;}int main(){ // fre(); int t,i,j; scanf("%d",&t); while(t--) { int maxx = 0; scanf("%d",&n); for(i = 0; i < n; ++i) { scanf("%s",a[i].s); a[i].len = strlen(a[i].s); maxx = max(maxx,a[i].len); pos[i] = 0; } ans = maxx; while(1) { if( dfs(0) ) break; ans++; } printf("%d\n",ans); } return 0;}
#include<cstdio>//hdu 2234#include<cstring>#include<cmath>#include<algorithm>#define MS(x,y) memset(x,y,sizeof(x))#define pi acos(-1.0)using namespace std;void fre(){freopen("t.txt","r",stdin);}typedef long long LL;typedef unsigned long long ULL;const int MOD = 1e9 + 7;const int inf = (1<<63)-1;const int MAXN = 4*(1e5)+1;const int eps = -(1<<30);int map[5][5],ans,vis[5];int get_h(){ int i,j; int s1 = 0,s2 = 0; for(i = 1; i <= 4; ++i)//row { MS(vis,0); int cnt = 0; for(j = 1; j <= 4; ++j) { if(vis[map[i][j]]) continue; vis[map[i][j]] = 1; cnt++; } s1 = max(s1,cnt-1); } for(i = 1; i <= 4; ++i)//column { MS(vis,0); int cnt = 0; for(j = 1; j <= 4; ++j) { if(vis[map[j][i]]) continue; vis[map[j][i]] = 1; cnt++; } s2 = max(s2,cnt-1); } return min(s1,s2);}void TR(int x){ int i,tem = map[x][4]; for(i = 4; i >= 2; --i) map[x][i] = map[x][i-1]; map[x][1] = tem;}void TL(int x){ int i,tem = map[x][1]; for(i = 1; i <= 3; ++i) map[x][i] = map[x][i+1]; map[x][4] = tem;}void TU(int x){ int i,tem = map[1][x]; for(i = 1; i <= 3; ++i) map[i][x] = map[i+1][x]; map[4][x] = tem;}void TD(int x){ int i,tem = map[4][x]; for(i = 4; i >= 2; --i) map[i][x] = map[i-1][x]; map[1][x] = tem;}bool dfs(int step){ if(!get_h()) return 1;// first must. if(step+get_h() > ans) return 0; int i,j; for(i = 1; i <= 4; ++i) { TL(i); if(dfs(step+1)) return 1; TR(i); TR(i); if(dfs(step+1)) return 1; TL(i); TU(i); if(dfs(step+1)) return 1; TD(i); TD(i); if(dfs(step+1)) return 1; TU(i); } return 0;}int main(){ // fre(); int t,i,j; scanf("%d",&t); while(t--) { for(i = 1; i <= 4; ++i)//read { for(j = 1; j <= 4; ++j) scanf("%d",&map[i][j]); } ans = 0; while(1) { if(dfs(0)) break; ans++; if(ans > 5) break; } if(ans > 5) printf("-1\n"); else printf("%d\n",ans); } return 0;}
1 0
- hdu 2234+1560 IDA*
- hdu 1560 IDA*
- 【IDA*】hdu 1560
- hdu 1560(IDA*)
- HDU 1560 IDA*搜索
- HDU 1560 IDA*
- HDU 1560 IDA*
- hdu 2234 IDA*
- hdu 2234(IDA*)
- hdu 2234 IDA*算法
- HDU 2234 IDA*
- HDU 1560 DNA sequence IDA*
- hdu 1560 DNA sequence(IDA*)
- HDU 1560 DNA sequence(IDA*~)
- hdu 2234 无题I IDA*
- HDU 1560 DNA sequence IDA*搜索
- hdu 1560 DNA sequence (IDA*)
- HDU-1560 DNA sequence(IDA*)
- 初识ACM——2015国庆培训
- 深度学习反思
- (NO.00005)iOS实现炸弹人游戏(一):游戏的整体规划设计
- IOS_归档与解档
- Hadoop NameNode元数据相关文件目录解析
- hdu 2234+1560 IDA*
- 数据结构-堆实现优先队列(java)
- 我眼中的互联网运营感观——如何进行活动组织?
- iOS保存系统相册中的照片到应用沙盒中出现的问题--图片旋转90度,使用CGImageRelease造成应用崩溃
- Logistic Regression(逻辑斯特回归)
- JAVA 关键字小结
- 同步 异步 阻塞 非阻塞
- 图文详解Unity3D中Material的Tiling和Offset是怎么回事
- Box2d 物体互相碰撞的条件