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

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

Sample Input

1 1 8 7 5 6
1 1 3 3 2 2

Sample Output

Case 1: 7
Case 2: 3

HINT

Source

湖南省第十届大学生计算机程序设计竞赛

两个多月前不会做的题目现在秒杀了。

#include <stdio.h>
#include <queue>
#include <algorithm>
using namespace std;
#include <string.h>
#include <stdlib.h>
int map[205][205];
int vis[205][205];
int dir[8][2]={{1,0},{-1,0},{0,1},{0,-1},{1,-1},{1,1},{-1,1},{-1,-1}};//周围的八个方向跳
int s1,e1,x2,y2;
struct node
{
	int x,y;
	int step;
}
;
bool check(int x,int y)  //检查是否符合条件
{
	if(x>8 || y>8 ||x<1 ||y<1 )
		return 1;
	if(x==x2 &&y==y2)
		return 1;
	if(vis[x][y])
		return 1;
	return 0;
}
int bfs(int x,int y)
{
	int i;
	queue<node>q;
	node st,ed;
	st.x=x;
	st.y=y;
	st.step=0;
	q.push(st);
	while(!q.empty())
	{
		st=q.front();
		q.pop();
		if(st.x==s1 &&st.y==e1)
			return st.step;  // 返回最小步数
		for(i=0;i<8;i++)
		{
			ed.x=st.x+dir[i][0];
			ed.y=st.y+dir[i][1];
			if(check(ed.x,ed.y))
				continue;
			ed.step=st.step+1;
			vis[ed.x][ed.y]=1;
			q.push(ed);
		}
	}
}
int main()
{
	int s,e,i,j;
	int Case=0;
	while(scanf("%d%d%d%d%d%d",&s,&e,&s1,&e1,&x2,&y2)!=EOF)
	{
		memset(vis,0,sizeof(vis));
		vis[s][e]=1;
		int ans=bfs(s,e);
        printf("Case %d: ",++Case);
		printf("%d\n",ans);
	}
	return 0;
}
时间: 2024-10-15 22:44:09

CSU 1511 残缺的棋盘的相关文章

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))最终结果, 但是如果陷阱在两条直线

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 残缺的棋盘 (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 Outp

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

电子书定价:     ¥ 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

残缺棋盘的覆盖问题

棋盘覆盖问题    问题描述: 在一个2^k×2^k个方格组成的棋盘中,若有一个方格与其他方格不同,则称该方格为一特殊方格,且称该棋盘为一个特殊棋盘.显然特殊方格在棋盘上出现的位置有4^k种情形.因而对任何k≥0,有4^k种不同的特殊棋盘.     下图–图(1)中的特殊棋盘是当k=3时16个特殊棋盘中的一个: 图(1) 题目要求在棋盘覆盖问题中,要用下图-图(2)所示的4种不同形态的L型骨牌覆盖一个给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖. 图(2) 题目输入k