CSU 残缺的棋盘 (BFS)

Description

Input

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

Output

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

Sample Input

<span class="sampledata">1 1 8 7 5 6
1 1 3 3 2 2</span>

Sample Output

<span class="sampledata">Case 1: 7
Case 2: 3</span>
<span class="sampledata"></span><pre name="code" class="html">#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int di,dj,r,c;
int m[9][9];
struct node
{
	int i,j,time;
};
queue<node>qq;
int x[8]={0,1,1,1,0,-1,-1,-1},y[8]={1,1,0,-1,-1,-1,0,1};

void bfs()
{
	while(!qq.empty()) {
		node temp=qq.front();
		node t=temp;
		qq.pop();
		if(t.i==r&&t.j==c) break;
		for(int i=0;i<8;i++) {
			t=temp;
			t.i+=x[i];
			t.j+=y[i];
			t.time+=1;
			if(t.i<1 || t.i>8 ||t.j<1 || t.j>8) continue;
			if(t.i==r && t.j==c) continue;
			if(t.time<m[t.i][t.j]) {
				m[t.i][t.j]=t.time;
				qq.push(t);
			}
		}
	}
}

int main()
{
	int si,sj,i,j,sigh;
	sigh=0;
	while(cin>>si>>sj>>di>>dj>>r>>c) {
		for(i=1;i<9;i++) {
			for(j=1;j<9;j++)
			m[i][j]=10000;
		}
		m[si][sj]=0;
		while(!qq.empty()) qq.pop();
		node temp={si,sj,0};
		qq.push(temp);
		bfs();
		printf("Case %d: %d\n",++sigh,m[di][dj]);
	}
}

<span class="sampledata">
</span>

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-06 16:00:36

CSU 残缺的棋盘 (BFS)的相关文章

CSU 1511 残缺的棋盘

1511: 残缺的棋盘 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 169  Solved: 56 [Submit][Status][Web Board] Description Input 输入包含不超过10000 组数据.每组数据包含6个整数r1, c1, r2, c2, r3, c3 (1<=r1, c1, r2, c2, r3, c3<=8). 三个格子A, B, C保证各不相同. Output 对于每组数据,输出测试点编号和最少步数

csuoj 1511: 残缺的棋盘

http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1511 1511: 残缺的棋盘 时间限制: 1 Sec  内存限制: 128 MB 题目描述 输入 输入包含不超过10000 组数据.每组数据包含6个整数r1, c1, r2, c2, r3, c3 (1<=r1, c1, r2, c2, r3, c3<=8). 三个格子A, B, C保证各不相同. 输出 对于每组数据,输出测试点编号和最少步数. 样例输入 1 1 8 7 5 6 1 1 3 3

湖南省第十届大学生计算机程序设计竞赛:残缺的棋盘

1511: 残缺的棋盘 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 169 Solved: 56 [Submit][Status][Web Board]Description] Input 输入包含不超过10000 组数据.每组数据包含6个整数r1, c1, r2, c2, r3, c3 (1<=r1, c1, r2, c2, r3, c3<=8). 三个格子A, B, C保证各不相同. Output 对于每组数据,输出测试点编号和最少步数.

CSU 1511: 残缺的棋盘(BFS啊 )

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1511 Description 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

CSU 1511 残缺的棋盘 第十届湖南省赛题

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1511 题目大意:在一个8*8的棋盘中,给你一个起点位置和一个终点位置,同时也给你一个陷阱位置,问你从起点绕过陷阱到终点的最短距离.(可以上下左右走还可以斜走) 解题思路:可以直接用搜索,也可以用数学知识来解决,我们之前学过,两点之间直接最短,所以当陷阱不在这条直线上的时候,我们就不用考虑陷阱了,直接是max(abs(x1-y1),abs(x2-y2))最终结果, 但是如果陷阱在两条直线

F: Horse Pro 马走棋盘 BFS

F: Horse Pro 豆豆也已经开始学着玩象棋了,现在豆豆已经搞清楚马的走法了,但是豆豆不能确定能否在 100 步以内从一个点到达另一个点(假设棋盘无限大). Input 第一行输入两个整数 x1,y1 表示当前马所在的位置. 第二行输入两个整数 x2,y2 表示豆豆想把马走在的位置. −10000≤x1,x2,y1,y2≤10000 Output 如果能够在100步以内(包括100步)从(x1,y1) 到达 (x2,y2) 则输出到达所需要的最小步数,否则输出 −1 Sample Inpu

《程序员的数学思维修炼》 读书笔记

电子书定价:     ¥ 45.00       这是什么?                     纸书定价:     ¥ 45.00       Kindle电子书价格:     ¥ 1.99                   为您节省:     ¥ 43.01      (0.4折)            ~ 周颖   等 (作者) 发售日期: 2014年4月1日 本书是一本专门为程序员而写的数学书,介绍了程序设计中常用的数学知识.本书门槛不高,不需要读者精通很多高深的数学知识,只需要读

数学思维修炼

最近想阅读一些数学方面的资料,但是又想和自己的工作联系上,因此就找到了这本<程序员的数学思维修炼(趣味解读)>,下面会对本书的知识点做个梳理. 1.2.6 数的阶乘 1.2.7 大整数 1.3.3 二进制运算 1.3.5 十进制和二进制之间的转换 以基数B再取余的方法 1.4 八进制.十六进制.六十进制 2.1.1 素数 2.1.3 试除法(循环到√n即可),数学家筛选法,Eratosthenes寻找100以内的素数的算法:依次去除2.3.5.7的倍数的整数 2.1.4 素数定理 2.2.2

残缺棋盘

//残缺棋盘的问题要求用3个方格的板(三格板)(triominoes)覆盖残缺棋盘. //在此覆盖中,两个三格板不能重叠,三格板不能覆盖残缺方格,但必须覆盖其他所有的方格. //在这种限制条件下,所需要的三格板总数为(2^(2k-1))/3. //可以验证(2^(2k-1))/3是一个整数.k为0的残缺棋盘很容易被覆盖, //因为它没有非残缺的方格,用于覆盖的三格板的数目为0.当k=1时, //正好存在3个非残缺的方格,并且这三个方格某一方 向的三格板来覆盖. //小残缺棋盘 //  1 //1