hdu 1175(广搜)
题意:容易理解...
思路:我开始的思路不好实现,而且有漏洞,时间复杂度也高,后来在网上学了下别人的方法,真心感觉很牛B,不仅代码好实现,而且时间复杂度比较低,具体看代码实现吧!!
代码实现:
#include<iostream>
#include<string.h>
#include<stdio.h>
#include<queue>
using namespace std;
struct node{
int x;
int y;
int count;
};
int visited[][];
int b[][]={{-,},{,},{,-},{,}};
int map[][];
int n,m;
int sx,sy,ex,ey;
int ca(int x,int y)
{
if(x>=&&x<=n&&y>=&&y<=m)
return ;
else
return ;
}
int bfs()
{
int i;
queue<node>Q;
struct node p,temp;
p.x=sx;
p.y=sy;
p.count=;
visited[sx][sy]=-;
Q.push(p);
while(!Q.empty())
{
p=Q.front();
Q.pop();
if(p.count>=)
return ;
if(p.x==ex&&p.y==ey)
return ;
for(i=;i<;i++)
{
temp.x=p.x+b[i][];
temp.y=p.y+b[i][];
while(ca(temp.x,temp.y)&&map[temp.x][temp.y]==)//把某个方向上的点全部搜完
{
if(visited[temp.x][temp.y]==)//还没访问过的点进入队列
{
visited[temp.x][temp.y]=-;
temp.count=p.count+;
if(temp.x==ex&&temp.y==ey)
{
if(temp.count<=)
return ;
else
return ;
}
Q.push(temp);
}
temp.x=temp.x+b[i][];
temp.y=temp.y+b[i][];
}
}
}
return ;
}
int main()
{
int i,j,q,temp;
while(scanf("%d%d",&n,&m)!=EOF&&(n+m)!=)
{
for(i=;i<=n;i++)
for(j=;j<=m;j++)
scanf("%d",&map[i][j]);
scanf("%d",&q);
while(q--)
{
for(i=;i<=n;i++)
for(j=;j<=m;j++)
visited[i][j]=;
scanf("%d%d%d%d",&sx,&sy,&ex,&ey);
if(map[sx][sy]==map[ex][ey]&&map[sx][sy]!=)
{
temp=map[ex][ey];
map[ex][ey]=;
if(bfs())
printf("YES\n");
else
printf("NO\n");
map[ex][ey]=temp;
}
else
printf("NO\n");
}
}
return ;
}
hdu 1175(广搜)的更多相关文章
- hdu 1072 广搜(逃离爆炸迷宫)
题意: 在n×m的地图上,0表示墙,1表示空地,2表示人,3表示目的地,4表示有定时炸弹重启器.定时炸弹的时间是6,人走一步所需要的时间是1.每次可以上.下.左.右移动一格.当人走到4时如果炸弹的时间 ...
- hdu 1072 广搜
路径是可以重复走的,但是如果再一次走过时间重置点是没有意义的 #include <iostream> #include <cstdio> #include <cstrin ...
- hdu 1180(广搜好题)
诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Subm ...
- hdu 1175 连连看 (广搜,注意解题思维,简单)
题目 解析见代码 #define _CRT_SECURE_NO_WARNINGS //这是非一般的最短路,所以广搜到的最短的路不一定是所要的路线 //所以应该把所有的路径都搜索出来,找到最短的转折数, ...
- hdu 5025 Saving Tang Monk 状态压缩dp+广搜
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092939.html 题目链接:hdu 5025 Saving Tang Monk 状态压缩 ...
- hdu 5094 Maze 状态压缩dp+广搜
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092176.html 题目链接:hdu 5094 Maze 状态压缩dp+广搜 使用广度优先 ...
- Combine String HDU - 5707 dp or 广搜
Combine String HDU - 5707 题目大意:给你三个串a,b,c,问a和b是不是恰好能组成c,也就是a,b是不是c的两个互补的子序列. 根据题意就可以知道对于c的第一个就应该是a第一 ...
- HDU 5652(二分+广搜)
题目链接:http://acm.hust.edu.cn/vjudge/contest/128683#problem/E 题目大意:给定一只含有0和1的地图,0代表可以走的格子,1代表不能走的格 子.之 ...
- hdu 1242:Rescue(BFS广搜 + 优先队列)
Rescue Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...
随机推荐
- Restore IP Addresses
Given a string containing only digits, restore it by returning all possible valid IP address combina ...
- javascript背景淡入淡出
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- https 方式使用git@osc设置密码的方式
https方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密码的困扰而且又享受https带来的极速 设置记住密码(默认15分钟): git config --global credenti ...
- POJ2418Hardwood Species
题意 : 输入若干个树木品种,里边有的是重复的,让你统计每个品种占输入的总数量的百分比,最后按字典序输出 思路 : 本题数量很大,所以采用直接统计的方式会超时,而采用的方法可以用二叉搜索树,或者用ma ...
- maven 命令备忘
1. 打包时 不执行测试 mvn package -Dmaven.test.skip=true
- Sina App Engine(SAE)入门教程(7)- Storage使用
参考阅读 sae storage api 文档 Storage 说明文档 Storage 大文件上传说明 storage是什么? 因为sae禁用了代码环境的本地读写,但是在网站运行的过程中,必定会出现 ...
- SpringMVC,MyBatis商品的增删改查
一.需求 商品的增删改查 二.工程结构 三.代码 1.Mapper层 (1) ItemsMapperCustom.java package com.tony.ssm.mapper; import ja ...
- [iOS]如何给Label或者TextView赋HTML数据
// // ViewController.m // text // // Created by 李东旭 on 16/1/22. // Copyright © 2016年 李东旭. All rights ...
- 243. Shortest Word Distance
题目: Given a list of words and two words word1 and word2, return the shortest distance between these ...
- python基础 - 文件读写
完成功能: 从指定位置读文件到控制台 #! /usr/bin/python # coding=utf- 方法一. try: f = open ('/root/python/file/001.txt', ...