poj1101 the game 广搜
题目大意:
类似于连连看,问从起点到终点最少需要几条线段。
规则:
1、允许出界。
2、空格的地方才能走。
分析:
题目做下来发现没有卡时间,所以主要还是靠思路。也就是说不用考虑离线算法。直接以每个起点开始搜。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std; const int N=;
int r,c,sx,sy,ex,ey,ans;
int vis[N][N],Map[N][N];
int dx[]={,-,,};
int dy[]={,,,-};
bool isin(int x,int y)
{
return x>=&&x<=r+&&y>=&&y<=c+;
}
struct node
{
int x,y,s;
};
node a,b;
queue<node> q;
void BFS()
{
int i,j,k,x,y;
while(!q.empty())
{
a=q.front(); q.pop();
for(k=;k<;k++)
{
x=a.x,y=a.y;
while()
{
x+=dx[k]; y+=dy[k];
if(!isin(x,y)) break;
if(x==ex&&y==ey){ans=a.s;return ;}
if(!vis[x][y])
{
b.x=x; b.y=y;b.s=a.s+;
q.push(b);
vis[x][y]=;
}
else break;
}
}
}
}
int main()
{
//freopen("test.txt","r",stdin);
int cas=,t;
while(scanf("%d%d",&c,&r)!=EOF&&c)
{
int i,j;
char ch[];
memset(Map,,sizeof(Map));
gets(ch);
for(i=;i<=r;i++)
{
gets(ch);
for(j=;j<c;j++)
if(ch[j]=='X') Map[i][j+]=;
}
printf("Board #%d:\n",++cas);
t=;
while(scanf("%d%d%d%d",&sy,&sx,&ey,&ex)!=EOF&&sy)
{
for(i=;i<=r+;i++)
for(j=;j<=c+;j++)
vis[i][j]=Map[i][j];
while(!q.empty()) q.pop();
a.x=sx,a.y=sy,a.s=;
q.push(a);
ans=-;
BFS();
printf("Pair %d: ",++t);
if(ans==-) printf("impossible.\n");
else printf("%d segments.\n",ans);
}
printf("\n");
}
return ;
}
poj1101 the game 广搜的更多相关文章
- HDU--杭电--1195--Open the Lock--深搜--都用双向广搜,弱爆了,看题了没?语文没过关吧?暴力深搜难道我会害羞?
这个题我看了,都是推荐的神马双向广搜,难道这个深搜你们都木有发现?还是特意留个机会给我装逼? Open the Lock Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 5652(二分+广搜)
题目链接:http://acm.hust.edu.cn/vjudge/contest/128683#problem/E 题目大意:给定一只含有0和1的地图,0代表可以走的格子,1代表不能走的格 子.之 ...
- nyoj 613 免费馅饼 广搜
免费馅饼 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy ...
- poj 3984:迷宫问题(广搜,入门题)
迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7635 Accepted: 4474 Description ...
- poj 3278:Catch That Cow(简单一维广搜)
Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 45648 Accepted: 14310 ...
- 双向广搜 POJ 3126 Prime Path
POJ 3126 Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16204 Accepted ...
- 广搜+打表 POJ 1426 Find The Multiple
POJ 1426 Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 25734 Ac ...
- 双向广搜 codevs 3060 抓住那头奶牛
codevs 3060 抓住那头奶牛 USACO 时间限制: 1 s 空间限制: 16000 KB 题目等级 : 黄金 Gold 题目描述 Description 农夫约翰被告知一头逃跑奶牛 ...
- 双向广搜+hash+康托展开 codevs 1225 八数码难题
codevs 1225 八数码难题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Yours和zero在研究A*启 ...
随机推荐
- 关于linux内核用纯c语言编写的思考
在阅读linux2.6 版本内核的虚拟文件系统和驱动子系统的时候,我发现内核纯用c语言编写其实也是有一点不方便,特别是内核中大量存在了对象的概念,比如说文件对象,描述起来使用对象描述,但是对象在c语言 ...
- vue 项目的I18n国际化之路
I18n (internationalization ) ---未完善 产品国际化是产品后期维护及推广中重要的一环,通过国际化操作使得产品能更好适应不同语言和地区的需求 国际化重点:1. 语言语言本地 ...
- 方便简单的远程控制:putty和WinSCP
记录一下WinSCP和putty的用法. putty:远程cmd窗口,在本机通过命令行操作服务器,并且拿到运行结果.而本机只有连接作用,大大减小了负担. 登陆界面输入ip地址,没有特殊情况,默认选项就 ...
- lambda表达式与委托与线程初步谈论-基于刘铁锰视频观后操作
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- mysql-索引、导入、导出、备份、恢复
1.索引 索引是一种与表有关的结构,它的作用相当于书的目录,可以根据目录中的页码快速找到所需的内容. 当表中有大量记录时,若要对表进行查询,没有索引的情况是全表搜索:将所有记录一一取出,和查询条件进行 ...
- 【[Offer收割]编程练习赛13 B】最大子矩阵(别人的思路)
[题目链接]:http://hihocoder.com/problemset/problem/1502 [题意] [题解] 枚举矩形的最上面的行数和最下面的行数(i,j且i<=j); 然后一个变 ...
- bootstrap下的双选时间插件使用方法
bootstrap画的页面很漂亮,能自动适应网页端,移动端.实现一个双选时间控件: 要得jar包自己去下 一.页面 二.JS var $createTime=$('#createTime');$cre ...
- hdu 2527哈夫曼树(二叉树的运用)
#include<stdio.h> #include<string.h> #define N 100 #define INF 2000000000 int b[N]; c ...
- webpack教程——css的加载
首先要安装css的loader npm install css-loader style-loader --save-dev 然后在webpack.config.js中配置如下代码 意思是先用css- ...
- Linux: 统计代码行数和SVN修改行数的命令
Mac下同样有效. 1. 统计目录下所有js文件的代码行数. find . -name '*.js' | xargs wc -l 2. 统计SVN的修改行数. svn diff -rBeginRev: ...