[Luogu2324]八数码难题

抱歉...我可能真的做搜索上瘾了...

 

还是IDA*,自己看看就好了...

 

注意一下搜索顺序

 

 1 #include<cstdio>
 2 #include<queue>
 3 #include<iostream>
 4 #include<cstring>
 5 using namespace std;
 6 inline int read(){
 7     int ans=0,f=1;char chr=getchar();
 8     while(!isdigit(chr)){if(chr=='-') f=-1;chr=getchar();}
 9     while(isdigit(chr)){ans=(ans<<3)+(ans<<1)+chr-48;chr=getchar();}
10     return ans*f;
11 }int a[4][4],x,y,ff;char chr;
12 const int S[4][4]={{0,0,0,0},{0,1,2,3},{0,8,0,4},{0,7,6,5}},dx[4]={0,1,-1,0},dy[4]={1,0,0,-1};
13 inline bool check(){
14     for(int i=1;i<=3;i++)
15         for(int j=1;j<=3;j++)
16             if(S[i][j]!=a[i][j]) return 0;
17     return 1;
18 }inline bool test(int x,int y){int ans=0;
19     for(int i=1;i<=3;i++)
20         for(int j=1;j<=3;j++)
21             if(S[i][j]!=a[i][j])
22                 if(++ans+x>y) return 0;
23     return 1;
24 }void dfs(int stp,int x,int y,int depth,int lst){
25     if(depth==stp){if(check()) ff=1;return;}
26     if(ff) return;
27     for(int i=0;i<4;i++){
28         int fx=x+dx[i],fy=y+dy[i];
29         if(fx<1||fy<1||fx>3||fy>3||lst+i==3) continue;
30         swap(a[x][y],a[fx][fy]);
31         if(test(stp,depth)&&!ff)    dfs(stp+1,fx,fy,depth,i);
32         swap(a[x][y],a[fx][fy]);
33     }
34 }
35 int main(){
36     for(int i=1;i<=3;i++)
37         for(int j=1;j<=3;j++){cin>>chr;if(chr=='0') x=i,y=j;a[i][j]=chr-48;}
38     if(check()){puts("0");return 0;}
39     int i=1;
40     while(i++){dfs(0,x,y,i,-1);if(ff){cout<<i;return 0;}}
41     return 0;
42 }

 

全部评论

相关推荐

真tmd的恶心,1.面试开始先说我讲简历讲得不好,要怎样讲怎样讲,先讲背景,再讲技术,然后再讲提升多少多少,一顿说教。2.接着讲项目,我先把背景讲完,开始讲重点,面试官立即打断说讲一下重点,无语。3.接着聊到了项目的对比学习的正样本采样,说我正样本采样是错的,我解释了十几分钟,还是说我错的,我在上一家实习用这个方法能work,并经过市场的检验,并且是顶会论文的复现,再怎么不对也不可能是错的。4.面试官,说都没说面试结束就退出会议,把面试者晾在会议里面,丝毫不尊重面试者难受的点:1.一开始是讲得不好是欣然接受的,毕竟是学习。2.我按照面试官的要求,先讲背景,再讲技术。当我讲完背景再讲技术的时候(甚至已经开始蹦出了几个技术名词),凭什么打断我说讲重点,是不能听出人家重点开始了?这也能理解,每个人都有犯错,我也没放心上。3.我自己做过的项目,我了解得肯定比他多,他这样贬低我做过的项目,说我的工作是错误的,作为一个技术人员,我是完全不能接受的,因此我就和他解释,但无论怎么解释都说我错。凭什么,作为面试官自己不了解相关技术,别人用这个方式work,凭什么还认为这个方法是错的,不接受面试者的解释。4.这个无可厚非,作为面试官,不打招呼就退出会议,把面试者晾着,本身就是有问题。综上所述,我现在不觉得第一第二点也是我的问题,面试官有很大的问题,就是专门恶心人的,总结面试官说教,不尊重面试者,打击面试者,不接受好的面试者,技术一般的守旧固执分子。有这种人部门有这种人怎么发展啊。最后去查了一下,岗位关闭了。也有可能是招到人了来恶心人的,但是也很cs
牛客20646354...:招黑奴啊,算法工程师一天200?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务