博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IDA*
阅读量:6772 次
发布时间:2019-06-26

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

算初学吧.很裸的IDA*

#include
#include
#include
#include
using namespace std;int map[6][6];int aim[6][6]={ {0,0,0,0,0,0}, {0,1,1,1,1,1}, {0,0,1,1,1,1}, {0,0,0,2,1,1}, {0,0,0,0,0,1}, {0,0,0,0,0,0}};int dx[9]={1,1,2,2,-1,-1,-2,-2};int dy[9]={-2,2,1,-1,2,-2,-1,1};int judge(){ int res=0; for(int i=1;i<=5;i++) for(int j=1;j<=5;j++) if(map[i][j]!=aim[i][j]) res+=1; return res;}bool make_it;bool check(int x,int y){ if(x<=0||y<=0||x>=6||y>=6) return false; return true;}void IDA_star(int x,int y,int dir,int dep,int want){ int nxt=judge(); if(!nxt) { cout<
<
want) return ; for(int i=0;i<=7;i++) { int nx=x+dx[i]; int ny=y+dy[i]; if(!check(nx,ny)) continue; swap(map[x][y],map[nx][ny]); IDA_star(nx,ny,i,dep+1,want); swap(map[x][y],map[nx][ny]); if(make_it) return ; }}int main(){ cin.sync_with_stdio(false); int n; cin>>n; while(n--) { make_it=false; int beginx,beginy; char in; for(int i=1;i<=5;i++) for(int j=1;j<=5;j++) { cin>>in; switch(in) { case '0':map[i][j]=0;break; case '1':map[i][j]=1;break; case '*':map[i][j]=2;beginx=i;beginy=j;break; } } for(int i=1;i<=15;i++) if(!make_it) IDA_star(beginx,beginy,8,0,i); if(!make_it) cout<<"-1"<

转载于:https://www.cnblogs.com/Lance1ot/p/8995305.html

你可能感兴趣的文章
SDE 远程连接 失败
查看>>
关于WayOs中无线覆盖中WEB认证存在的一些问题
查看>>
JavaScript原型继承的陷阱
查看>>
Oracle公司对日本9.0级大地震的哀悼
查看>>
C语言的##
查看>>
start a new android studio project not working
查看>>
Flashtext 使用文档 大规模数据清洗的利器-实现文本结构化
查看>>
学会用“我懂谁最懂”策略
查看>>
解决socket交互的10048和10055错误的总结
查看>>
UVA 10229 Modular Fibonacci
查看>>
将uglifyjs添加到鼠标右键菜单
查看>>
OSGI的实现——Felix
查看>>
每日英语:There's No Avoiding Google+
查看>>
面试题(1)
查看>>
halcon学习笔记——(8)由标定板得到测量平面位姿
查看>>
css中导入样式表和链接样式表有什么区别
查看>>
排序算法(牢记)
查看>>
昨天开发引入的两个错误--Parcelable
查看>>
ylb:exists(存在)的应用实例
查看>>
[oracle] 系统权限管理
查看>>