博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1198 hdu 1401 搜索+剪枝 Solitaire
阅读量:7064 次
发布时间:2019-06-28

本文共 1627 字,大约阅读时间需要 5 分钟。

写到一半才发现能够用双向搜索4层来写,但已经不愿意改了,干脆暴搜+剪枝水过去算了。

想到一个非常水的剪枝,h函数为  当前点到终点4个点的最短距离加起来除以2。由于最多一步走2格,然后在HDU上T了,又发现再搜索过程中。这个估价函数应该是递减的(贪心),再加上这个剪枝就过了。

#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define stop system("pause")struct node{ int x,y;}a[4],b[4];int dx[]={0,0,-1,1};int dy[]={-1,1,0,0};bool no(int x,int y){ for(int i=0;i<4;i++) if(a[i].x==x&&a[i].y==y) return false; return true;}bool isok(int x,int y){ return x>=1&&x<=8&&y>=1&&y<=8;}bool ed[9][9];int h(){ int cnt=0; for(int i=0;i<4;i++) { int mi=10000; for(int j=0;j<4;j++) { mi=min(mi,abs(a[i].x-b[j].x)+abs(a[i].y-b[j].y)); } cnt+=mi; } return cnt;}bool dfs(int dis,int last){ int t=h(); if(t==0) return true; t/=2; if(dis+t>=8||t>last) return false; for(int i=0;i<4;i++) { for(int d=0;d<4;d++) { if(isok(a[i].x+dx[d],a[i].y+dy[d])) { if(no(a[i].x+dx[d],a[i].y+dy[d])) { a[i].x+=dx[d]; a[i].y+=dy[d]; if(dfs(dis+1,t)) {return true;} a[i].x-=dx[d]; a[i].y-=dy[d]; } else if(isok(a[i].x+2*dx[d],a[i].y+2*dy[d])&&no(a[i].x+2*dx[d],a[i].y+2*dy[d])) { a[i].x+=2*dx[d]; a[i].y+=2*dy[d]; if(dfs(dis+1,t)) {return true;} a[i].x-=2*dx[d]; a[i].y-=2*dy[d]; } } } } return false;}int main(){ int x,y; while(~scanf("%d%d",&a[0].x,&a[0].y)) { memset(ed,0,sizeof(ed)); for(int i=1;i<4;i++) scanf("%d%d",&a[i].x,&a[i].y); for(int i=0;i<4;i++) scanf("%d%d",&b[i].x,&b[i].y),ed[b[i].x][b[i].y]=true; if(dfs(0,10000)) puts("YES"); else puts("NO"); } return 0;}
 


本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5092467.html,如需转载请自行联系原作者

你可能感兴趣的文章
终端计算、集中计算、云计算优缺点的比较
查看>>
保险领域网络安全形势最严峻
查看>>
金融创新推动资产管理公司发展
查看>>
《精通Spring MVC 4》——1.7 错误与转码配置
查看>>
《Spark大数据分析:核心概念、技术及实践》一1.7 总结
查看>>
警惕一大波银行类木马正在靠近,新型BankBot木马解析
查看>>
并发集合(三)使用阻塞线程安全的列表
查看>>
【深度分解】听趣拍云产品经理剖析视频基础知识(1)
查看>>
股票K线图
查看>>
C语言项目参考解答:全正整数后再计算
查看>>
关于IT之家的说明
查看>>
第二热门语言:从入门到精通,Python数据科学简洁教程
查看>>
四方联合启动医保移动支付试点 激活移动医疗产业链
查看>>
识别诈骗邮件
查看>>
数据结构例程——选择排序之堆排序
查看>>
Python2 爬虫(一) -- 人生第一条蠕动的爬虫
查看>>
从IaaS到AI,马云为何让阿里云去扛人工智能大旗?
查看>>
如何做好自动化测试,揭秘阿里巴巴分层自动化实践之路
查看>>
开源大数据周刊-第20期
查看>>
jquery ajax分页 js对象
查看>>