博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P-残缺的棋盘
阅读量:6832 次
发布时间:2019-06-26

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

这里写图片描述

Input
输入包含不超过10000 组数据。每组数据包含6个整数r1, c1, r2, c2, r3, c3 (1<=r1, c1, r2, c2, r3, c3<=8). 三个格子A, B, C保证各不相同。

Output

对于每组数据,输出测试点编号和最少步数。

Sample Input

1 1 8 7 5 6
1 1 3 3 2 2
Sample Output
Case 1: 7
Case 2: 3
分析:
BFS搜索题;
代码:

#include
#include
#include
#include
using namespace std;const int N = 10 + 5;typedef struct node{ int x,y,step; bool operator <(const node x) const { return step > x.step; }}Node;int x1,y1,x2,y2,x3,y3;bool visit[N][N];void Init(){ memset(visit,0,sizeof(visit)); visit[x3][y3] = true;}const int dir[8][2]={
{
1,0},{-1,0},{
0,1},{
0,-1},{
1,1},{-1,1},{
1,-1},{-1,-1}};int BFS(){ priority_queue
Q; Node t,s; t.x = x1,t.y = y1,t.step = 0; Q.push(t); visit[t.x][t.y] = true; while(!Q.empty()){ t = Q.top();Q.pop(); if(t.x == x2 && t.y == y2) return t.step; for(int d=0;d<8;d++){ int newx = t.x + dir[d][0]; int newy = t.y + dir[d][1]; if(newx <= 0|| newx > 8 || newy <=0 || newy>8|| visit[newx][newy] ) continue; s.x = newx,s.y = newy,s.step = t.step+1; visit[s.x][s.y] = true; Q.push(s); } } return -1;}int main(){ int Case = 0; while(cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3){ Init(); printf("Case %d: %d\n",++Case,BFS()); }}

 

转载于:https://www.cnblogs.com/Pretty9/p/7347687.html

你可能感兴趣的文章
Mysql master slave Failed to open the relay log
查看>>
华商网:一定是哪里出了问题!
查看>>
搭建kafka运行环境
查看>>
Linux上查看造成IO高负载的进程
查看>>
DOS命令大全
查看>>
zabbix配置及邮件短信报警
查看>>
中国开发者也可以发布WP7应用
查看>>
基于linux6.x安装xgboost
查看>>
Centos7使用mailx发送邮件
查看>>
我为什么不用 Linux 作为我的桌面系统
查看>>
Linux系统结构目录、ls命令、文件类型、alias命令笔记
查看>>
20种新颖的按钮风格和效果【附源码下载】
查看>>
ASP.NET MVC 视图(五)
查看>>
springboot 注入 restTemplate
查看>>
新建swap分区的规划、挂载和自动挂载示例
查看>>
ubuntu ufw使用规则
查看>>
SCCM 2007r2 操作系统播发故障处理案例三
查看>>
Linux网站架构系列之Apache----进阶篇
查看>>
Cisco ASA Failover配置实例 ZZ
查看>>
网络防火墙的配置与管理
查看>>