P1605 迷宫

这是一道毒瘤题。。。

这是一道广搜题 bfs 。。。

注释:

1.memcpy(b,a,sizeof(a))

把 a 的值全部复制给 b

memcpy(b,a,sizeof(int)*k)

把 a 中的 k 个元素复制给 b

头文件:#include<cstring>

代码:

#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstring>
#include<queue>
using namespace std;
int n,m,t,sx,sy,fx,fy,tx,ty,ans=;
bool vis[][]; //表示是否为墙
int dx[]={-,,,},
dy[]={,,-,};
struct pos //结构体 x代表横坐标,y代表纵坐标,used[][]代表是否走过
{
int x,y,used[][]; };
bool pan(int x,int y) //判断是否合法
{
return x>=&&x<=n&&y>=&&y<=m&&vis[x][y]==;
} pos sa;
void bfs()
{
queue<pos>q; //队列
sa.x=sx;
sa.y=sy;
sa.used[sx][sy]=; //标记已走
q.push(sa); //入队
while(!q.empty())
{
pos h=q.front();
q.pop(); //出队
for(int i=;i<=;i++)
{
int xx=h.x+dx[i];
int yy=h.y+dy[i];
if(h.used[xx][yy]||(!pan(xx,yy))) //不可以走
continue ;
if(xx==fx&&yy==fy) //到终点
{
ans++;
continue ;
} sa.x=xx;
sa.y=yy;
memcpy(sa.used,h.used,sizeof(h.used)); //鬼知道这是干什么哒(我知道了)注释1
sa.used[xx][yy]=;
q.push(sa); //新的入队 }
}
}
int main()
{
cin>>n>>m>>t;
cin>>sx>>sy>>fx>>fy;
for(int i=;i<=t;i++)
{
cin>>tx>>ty;
vis[tx][ty]=;
} bfs(); //广搜 cout<<ans; return ; }

这还是一道深搜题 dfs 。。。

回顾一下递归回溯算法框架:

int search(int x,int y)
{
if(到目的地) 输出解;
else
for(int i=;i<=算符种数;i++)
{
if(符合条件)
{
保存结果;
search(下一层);
恢复:保存结果之前的状态{回溯};
}
}
}

代码:

#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstring>
#include<queue>
using namespace std;
int n,m,t,sx,sy,fx,fy,tx,ty,ans=;
bool vis[][];
int dx[]={-,,,},
dy[]={,,-,};
bool pan(int x,int y)
{
return x>=&&x<=n&&y>=&&y<=m&&vis[x][y]==;
} void dfs(int x,int y)
{
if(x==fx&&y==fy)
ans++; for(int i=;i<=;i++)
{
int xx=x+dx[i];
int yy=y+dy[i];
if(pan(xx,yy))
{
vis[xx][yy]=;
dfs(xx,yy);
vis[xx][yy]=;
}
}
}
int main()
{
cin>>n>>m>>t;
cin>>sx>>sy>>fx>>fy;
for(int i=;i<=t;i++)
{
cin>>tx>>ty;
vis[tx][ty]=;
}
vis[sx][sy]=;
dfs(sx,sy); cout<<ans; return ; }

P1605 迷宫的更多相关文章

  1. 洛谷 P1605 迷宫

    题目链接 https://www.luogu.org/problemnew/show/P1605 题目背景 迷宫 题目描述 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 ...

  2. 洛谷—— P1605 迷宫

    P1605 迷宫 题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在 ...

  3. 洛谷P1605 迷宫——S.B.S.

    题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...

  4. 【搜索1】P1605 迷宫

    题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...

  5. (DFS)P1605 迷宫 洛谷

    题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...

  6. P1605 迷宫 dfs回溯法

    题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...

  7. 洛谷P1605 迷宫 (DFS)

    题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...

  8. 洛谷P1605 迷宫【dfs】

    题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...

  9. P1605 迷宫(洛谷)

    题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫中移动有上下左右 ...

随机推荐

  1. 单行显示三级分销记录(同表自join)

    1)首先是一个简单的三级分销(邀请与被邀请),表结构是酱紫的 CREATE TABLE `d_user_invite` ( `invite_id` ) NOT NULL AUTO_INCREMENT, ...

  2. [原]Failed connect to mirrors.cloud.aliyuncs.com:80; Connection refused

    web site : https://opsx.alibaba.com/mirror 运行后出现下面的Error: base//x86_64/other_db FAILED http://mirror ...

  3. Linux系统安全之pam后门安装使用详解

    一.查看系统pam版本: [root@redkey ~]# rpm -qa | grep pam pam-1.1.1-4.el6.x86_64 二.下载对应版本的pam模块 http://www.li ...

  4. Butterknife 导入项目配置

    在app的 build.gradle 文件中添加 dependencies { // Butterknifeapi 'com.jakewharton:butterknife:8.6.0'annotat ...

  5. macOS Sierra上面的php开发环境安装

    本文参考资料: 启动apache时,解决  How to Fix AH00558 and AH00557 httpd apr_sockaddr_info_get() Error Message     ...

  6. 修改phpcms默认分页样式

    #pages { padding-top:30px;text-align:center;font:12px '微软雅黑';} #pages a { display:inline-block; padd ...

  7. 用js实现二维数组的旋转

    我最近因为做了几个小游戏,用到了二维数组,其中有需求将这个二维数组正翻转 90°,-90°,180°. 本人是笨人,写下了存起来. 定义的基本二位数组渲染出来是这种效果. 现在想实现的结果是下面的效果 ...

  8. swust oj 1075

    求最小生成树(Prim算法) 1000(ms) 10000(kb) 2251 / 4487 Tags: 生成树 求出给定无向带权图的最小生成树.图的定点为字符型,权值为不超过100 的整形.在提示中已 ...

  9. ajax方式提交表单数据并判断当前注册用户是否存在

    项目的目录结构 源代码: regservlet.java package register; import java.io.IOException; import java.io.PrintWrite ...

  10. hibernate--博客

    地址:http://blog.csdn.net/wangpeng047/article/category/907051