当前位置: 首页 > news >正文

P2324 [SCOI2005] 骑士精神

P2324 [SCOI2005] 骑士精神

大意

最小的步数达到要求的地方。

思路

这个题目的目标状态也很简约,就是形如题目中的样子,这个我们转换思路就是拿着这个空格去和旁边的格子不断的交换,但是这样产生的状态是很多的,为了剪枝,我们采用 IDA*,这个题目的估价函数有个很显然的写法,就是记录错误位置的个数,因此,一定小于等于...吗?我们考虑这样的情况,如果现在只需要一步,将空格和一个棋子交换,这样的实际步数是 \(1\),但是你的估价函数给的是 \(2\),显然不行,特判一下即可。然后我们就正常的去迭代加深的搜索就好。

代码

#include<iostream>
using namespace std;int T, ans = 1e9;
int a[6][6];
int dx[] = {1, 1, -1, -1, 2, 2, -2, -2};
int dy[] = {2, -2, 2, -2, 1, -1, 1, -1};int f(int b[6][6]){int res = 0;for(int j = 1;j <= 5;j ++){if(b[1][j] != 1) res ++;}for(int j = 1;j <= 5;j ++){if(b[5][j] != 0) res ++;}if(b[2][1] != 0) res ++;for(int j = 2;j <= 5;j ++){if(b[2][j] != 1) res ++;}if(b[4][5] != 1) res ++;for(int j = 1;j <= 4;j ++){if(b[4][j] != 0) res ++;}for(int j = 1;j <= 2;j ++){if(b[3][j] != 0) res ++;}if(b[3][3] != 2) res ++;for(int j = 4;j <= 5;j ++){if(b[3][j] != 1) res ++;}if(res == 2) return 1;return res;
}void dfs(int dp, int now, int cnt[6][6]){if(now >= ans) return;if(f(cnt) == 0){ans = now;return;}if(now + f(cnt) > dp) return;if(now > dp){return;}int sx = 0, sy = 0;for(int i = 1;i <= 5;i ++){if(sx) break;for(int j = 1;j <= 5;j ++){if(cnt[i][j] == 2){sx = i, sy = j;break;}}}for(int i = 0;i < 8;i ++){int nx = sx + dx[i];int ny = sy + dy[i];if(nx < 1 || ny < 1 || nx > 5 || ny > 5) continue;int sum[6][6];for(int p = 1;p <= 5;p ++){for(int q = 1;q <= 5;q ++){sum[p][q] = cnt[p][q];}}swap(sum[sx][sy], sum[nx][ny]);dfs(dp, now + 1, sum);}
}int main(){cin >> T;while(T --){for(int i = 1;i <= 5;i ++){string s; cin >> s;for(int j = 0;j < 5;j ++){if(s[j] == '*') a[i][j + 1] = 2;else a[i][j + 1] = s[j] - '0';}}ans = 1e9;for(int dp = 1;dp <= 15;dp ++){dfs(dp, 0, a);if(ans <= 15) break;}if(ans <= 15){cout << ans << '\n';}else{cout << -1 << '\n';}}return 0;
}
http://www.jsqmd.com/news/293961/

相关文章:

  • 深入解析:【ZJ】Pytest框架搭建
  • 佑邦智能行业口碑如何?浙江地区排名揭晓
  • 真实的讯灵Ai代理联系方式靠谱吗,一起来分析
  • 河北靠谱的水泵减震器公司如何选择,看这里
  • 加热盘创新厂家哪家好,国瑞热控技术优势显著!
  • 2026年北京眼镜店卖的眼镜质量好的推荐,烁客眼镜店上榜!
  • Java毕设项目:基于springboot的运动用品商城系统(源码+文档,讲解、调试运行,定制等)
  • 2026年成都值得推荐的太阳能板定制企业,哪家性价比高?
  • Java计算机毕设之基于Java的演出购票系统基于springboot的线下演出售票管理系统(完整前后端代码+说明文档+LW,调试定制等)
  • Java计算机毕设之基于springboot的运动用品商城系统基于java+springboot的体育用品购物商城系统(完整前后端代码+说明文档+LW,调试定制等)
  • QT软件外包的开发费用
  • 完整教程:WPF工业设备远程控制程序技术方案
  • 破译NAD+密码:AGI领袖山姆奥特曼押注抗衰,盼生派NMN探索青春调控途径
  • 【计算机毕业设计案例】基于springboot的线下演出售票管理系统基于Java的演出购票系统(程序+文档+讲解+定制)
  • 【计算机毕业设计案例】基于Java+Springboot+vue体育用品销售商城平台设计和实现基于springboot的运动用品商城系统(程序+文档+讲解+定制)
  • 收藏!2026大模型学习指南:普通程序员如何抓住AI风口不被淘汰
  • 【收藏级】大模型Agent全解析:定义、组件、框架及实战应用指南
  • Day3
  • 淋浴房加工厂深圳哪家好,有没有性价比高的?
  • To Do 8B
  • 2026年玉溪口碑不错的装修企业,欢乐佳园装饰值得关注
  • 海鲜礼盒品牌有哪些,渔公码头的产品优势了解一下
  • 收藏!唐杰与Karpathy共识:2026年大模型从工具到AI员工的蜕变之路
  • 【收藏】大语言模型工作原理全解析:从输入到输出 + DeepSeek V3 实战指南
  • Java毕设选题推荐:基于springboot的线下演出售票管理系统基于Java web 的线下演出售票管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • Java毕设选题推荐:基于springboot的运动用品商城系统基于Spring Boot的体育购物商城系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 计算机Java毕设实战-基于Java web 的线下演出售票管理系统基于springboot的线下演出售票管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 计算机Java毕设实战-基于springboot的运动用品商城系统基于Java+Springboot+vue体育用品销售商城平台设计和实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 高职/大专学计算机的突围路径
  • 2026高职大数据与财务管理专业证书报考条件