【BZOJ】【1085】【SCOI2005】骑士精神
2015-02-17 11:24
211 查看
IDA*算法
Orz HZWER
A*+迭代加深搜索=IDA*
这题的估价相当于一个可行性剪枝,即如果当前走的步数s+未归位的点数>搜索深度k,则剪枝
View Code
Orz HZWER
A*+迭代加深搜索=IDA*
这题的估价相当于一个可行性剪枝,即如果当前走的步数s+未归位的点数>搜索深度k,则剪枝
/************************************************************** Problem: 1085 User: Tunix Language: C++ Result: Accepted Time:1388 ms Memory:1272 kb ****************************************************************/ //BZOJ 1085 #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> #define rep(i,n) for(int i=0;i<n;++i) #define F(i,j,n) for(int i=j;i<=n;++i) #define D(i,j,n) for(int i=j;i>=n;--i) using namespace std; int getint(){ int v=0,sign=1; char ch=getchar(); while(ch<'0'||ch>'9') {if (ch=='-') sign=-1; ch=getchar();} while(ch>='0'&&ch<='9') {v=v*10+ch-'0'; ch=getchar();} return v*=sign; } /*******************tamplate********************/ int k; const int ans[5][5]={{1,1,1,1,1}, {0,1,1,1,1}, {0,0,2,1,1}, {0,0,0,0,1}, {0,0,0,0,0}}; const int fx[8]={1,1,-1,-1,2,2,-2,-2}, fy[8]={2,-2,2,-2,1,-1,1,-1}; bool flag=0; bool judge(int a[5][5]){ rep(i,5) rep(j,5) if (ans[i][j]!=a[i][j]) return 0; return 1; } bool eva(int a[5][5],int s){ int v=0; rep(i,5) rep(j,5) if (a[i][j]!=ans[i][j]){ v++; if(v+s>k) return 0; } return 1; } //v¼´Îª¹À¼Ûº¯Êý£¨Èç¹û¸úans²î¾àÌ«´ó£¬²»¿ÉÄÜÔÚk²½Ö®ÄÚ³ö½â£¬ÔòÉáÆú void search(int s,int a[5][5],int x,int y){ if (s==k) {if (judge(a)) flag=1; return;} if (flag==1) return; rep(i,8){ int tx=x+fx[i],ty=y+fy[i]; if (tx<0||tx>4||ty<0||ty>4) continue; swap(a[x][y],a[tx][ty]); if (eva(a,s)) search(s+1,a,tx,ty); swap(a[x][y],a[tx][ty]); } } int main(){ int T=getint(); char ch[10]; while(T--){ int a[5][5],x,y; memset(a,0,sizeof a); rep(i,5){ scanf("%s",ch); rep(j,5) if (ch[j]=='*'){ a[i][j]=2;x=i;y=j; } else a[i][j]=ch[j]-'0'; } flag=0; for(k=1;k<=15;++k){ search(0,a,x,y); if (flag){ printf("%d\n",k);break;} } if (!flag) printf("-1\n"); } return 0; }
View Code
相关文章推荐
- bzoj1085[SCOI2005]骑士精神
- 【bzoj1085】[SCOI2005]骑士精神
- [SCOI2005][BZOJ1085][迭代加深+A*剪枝]骑士精神
- bzoj 1085: [SCOI2005]骑士精神
- BZOJ.1085.[SCOI2005]骑士精神(迭代加深搜索)
- 【bzoj1085】【SCOI2005】【骑士精神】【IDA*】
- BZOJ 1085 [SCOI2005]骑士精神 【A*启发式搜索】
- BZOJ1085: [SCOI2005]骑士精神
- 【BZOJ1085】[SCOI2005]骑士精神
- 【bzoj1085】[SCOI2005]骑士精神
- bzoj1085 [SCOI2005]骑士精神 【迭代加深搜索】
- BZOJ1085: [SCOI2005]骑士精神
- BZOJ1085 [SCOI2005]骑士精神
- 【BZOJ1085】【SCOI2005】骑士精神 [A*搜索]
- 【bzoj1085】[SCOI2005]骑士精神
- BZOJ 1085 [SCOI2005]骑士精神 A*搜索
- [bzoj 1085--SCOI2005]骑士精神
- 【bzoj1085】 SCOI2005—骑士精神
- 【BZOJ】1085: [SCOI2005]骑士精神
- bzoj1085 [SCOI2005]骑士精神 ( 迭代加深搜索 + A*启发式搜索 )