搜索三·启发式搜索

搜索三·启发式搜索

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 #define FP freopen("in.txt","r",stdin)
 4 const int maxn=400010;
 5 const int mod=1313131;
 6
 7 typedef int Sta[9];
 8 Sta st[maxn],goal;
 9 int dis[maxn];
10 int head[mod],nex[maxn];
11 int dir[4][2]={0,1,0,-1,1,0,-1,0};
12
13 void init_vis(){
14     memset(head,-1,sizeof(head));
15 }
16
17 int hs(Sta& s){
18     int v=0;
19     for(int i=0;i<9;i++) v=v*10+s[i];
20     return v%mod;
21 }
22
23 int try_vis(int s){
24     int u=hs(st[s]);
25     for(int v=head[u];v!=-1;v=nex[v]){
26         if(memcmp(st[s],st[v],sizeof(st[s]))==0) return 0;
27     }
28     nex[s]=head[u];
29     head[u]=s;
30     return 1;
31 }
32
33 int bfs(){
34     init_vis();
35     int ff=1,ee=2;
36     dis[ff]=0;
37     while(ff<ee){
38         Sta& s=st[ff];
39         if(memcmp(s,goal,sizeof(s))==0) return ff;
40         int z;
41         for(z=0;z<9;z++) if(!s[z]) break;
42         int x=z/3,y=z%3;
43         for(int i=0;i<4;i++){
44             int nx=x+dir[i][0];
45             int ny=y+dir[i][1];
46             int nz=nx*3+ny;
47             if(nx>=0&&nx<3&&ny>=0&&ny<3){
48                 Sta& t=st[ee];
49                 memcpy(&t,&s,sizeof(s));
50                 t[nz]=s[z];
51                 t[z]=s[nz];
52                 dis[ee]=dis[ff]+1;
53                 if(try_vis(ee)) ee++;
54             }
55         }
56         ff++;
57     }
58     return 0;
59
60 }
61 int main(){
62     //FP;
63     int T;
64     scanf("%d",&T);
65     for(int i=0;i<9;i++) goal[i]=(i+1)%9;
66     while(T--){
67         for(int i=0;i<9;i++) scanf("%d",&st[1][i]);
68         int ans=bfs();
69         if(ans>0) printf("%d\n",dis[ans]);
70         else puts("No Solition!");
71     }
72 }

时间: 2024-08-28 08:03:19

搜索三·启发式搜索的相关文章

hihoCoder #1312 : 搜索三&#183;启发式搜索(A*, 康托展开)

原题网址:http://hihocoder.com/problemset/problem/1312 时间限制:10000ms 单点时限:1000ms 内存限制:256MB   描述 在小Ho的手机上有一款叫做八数码的游戏,小Ho在坐车或者等人的时候经常使用这个游戏来打发时间. 游戏的棋盘被分割成3x3的区域,上面放着标记有1~8八个数字的方形棋子,剩下一个区域为空. 游戏过程中,小Ho只能移动棋子到相邻的空区域上.当小Ho将8个棋子都移动到如下图所示的位置时,游戏就结束了. 小Hi:小Ho,你觉

[Elasticsearch] 多字段搜索 (三) - multi_match查询和多数字段

multi_match查询 multi_match查询提供了一个简便的方法用来对多个字段执行相同的查询. NOTE 存在几种类型的multi_match查询,其中的3种正好和在"了解你的数据"一节中提到的几种类型相同:best_fields,most_fields以及cross_fields. 默认情况下,该查询以best_fields类型执行,它会为每个字段生成一个match查询,然后将这些查询包含在一个dis_max查询中.下面的dis_max查询: { "dis_max

[Elasticsearch] 全文搜索 (三) - match查询和bool查询的关系,提升查询子句

match查询是如何使用bool查询的 现在,你也许意识到了使用了match查询的多词查询只是简单地将生成的term查询包含在了一个bool查询中.通过默认的or操作符,每个term查询都以一个k语句被添加,所以至少一个should语句需要被匹配.以下两个查询是等价的: { "match": { "title": "brown fox"} } { "bool": { "should": [ { "

Elasticsearch学习之深入搜索三 --- best fields策略

1. 为帖子数据增加content字段 POST /forum/article/_bulk { "update": { "_id": "1"} } { "doc" : {"content" : "i like to write best elasticsearch article"} } { "update": { "_id": "2&q

搜索专讲

搜索专讲 Tags:搜索 https://www.zybuluo.com/xzyxzy/note/1058215 前言 做一个专题肯定是要花点时间的 但是哇,搜索怎么这么多内容?!WTF?! 好吧慢慢刷,待四五月份左右出pdf或ppt的讲义吧 先把题目放上,大家愿意的和我一起做吧 题目 李老师给了一个包 广搜 [x] ?POJ1426-Find The Multiple https://vjudge.net/problem/POJ-1426 [x] POJ2251-Dungeon Master

1.搜索引擎的历史,搜索引擎起步,发展,繁荣,搜索引擎的原理,搜索技术用途,信息检索过程,倒排索引,什么是Lucene,Lucene快速入门

 一: 1  搜索引擎的历史 萌芽:Archie.Gopher Archie:搜索FTP服务器上的文件 Gopher:索引网页 2  起步:Robot(网络机器人)的出现与spider(网络爬虫) Robot基于网络的,可以执行特定任务的程序 Spider:特殊的机器人,网络爬虫,爬取互联网上的信息(可以是文件,网络)----网络自动下载程序 3   发展阶段:excite,galaxy,yahoo这些公司做搜索 4   繁荣:infoseek,AltaVista,Google和百度 5  

爱搜索,爱生活,基于豆瓣API &amp; Angular开发的web App(by vczero)

一.扯淡的说 name:[豆瓣搜索] 最近关注了下豆瓣的API,发现豆瓣开放平台需要加强API文档撰写啊....但是有个可喜的发现豆瓣V2接口提供了搜索接口.最近在用phantom弄些爬虫,想想,真是美丽极了!有个豆瓣的接口,我都不用去爬数据,不用数据存储,丢给github page直接完事.豆瓣,Nice!最近也在看angular,于是就萌生了使用Angular + 豆瓣API 做一个web app.于是...网上回家就折腾了. 体验地址:http://vczero.github.io/t/h

elasticsearch(4) 轻量搜索

一 空搜索 搜索API的最基础的形式是没有指定任何查询的空搜索 ,它简单地返回集群中所有索引下的所有文档: 示例 GET 127.0.0.1:9200/_search 响应 { "took": 166, "timed_out": false, "_shards": { "total": 10, "successful": 10, "skipped": 0, "failed&qu

关于“三丰云”免费领取云服务的使用心得~

已稳定使用1个月了,这一切均免费哦! 1.服务器申请 本人学生党,最近想学习微信小程序开发,网上找了很久,发现"三丰云",就点开看了一下,还不错.比有些申请审核都需要好几天的好多了,分分钟申请到资源(偷乐). 2.使用 我的配置:1核/1G,硬盘:10G,带宽:5M,线路:BGP多线 拿到手当然要折腾一番了. 装了tomcat.mysql,运行流畅,学习完全够用. 这里我要特别表扬一下客服,使用xshell远程的时候遇到了问题,回复很及时,回答问题快.准. 4.总体体验 除了稳定,站长