kuangbin专题 专题一 简单搜索 迷宫问题 POJ - 3984
题目链接:https://vjudge.net/problem/POJ-3984
这个题目,emm,上代码,看的估计应该是刚开始接触搜索的,我带点注释,你能慢慢理解。
- #include <iostream>
- #include <cstring>
- #include<vector>
- #include<string>
- #include <cmath>
- #include <map>
- #include <queue>
- #include <algorithm>
- using namespace std;
- #define inf (1LL << 31) - 1
- #define rep(i,j,k) for(int i = (j); i <= (k); i++)
- #define rep__(i,j,k) for(int i = (j); i < (k); i++)
- #define per(i,j,k) for(int i = (j); i >= (k); i--)
- #define per__(i,j,k) for(int i = (j); i > (k); i--)
- const int N = ;
- int mv_x[] = { , , -, }; //(1)
- int mv_y[] = { , -, , }; //(2) (1) + (2) 可以表示人的上下左右移动
- char mp[N][N]; //地图
- bool vis[N][N]; //有没有访问过了
- struct node{
- int x, y;
- vector<string> vec;
- node(){}
- node(int a, int b){
- x = a;
- y = b;
- }
- };
- inline void input(){
- rep__(i, , ) rep__(j, , ) cin >> mp[i][j];
- }
- //检查有无越界的函数
- inline bool check(int x, int y){
- return x >= && x <= && y >= && y <= ;
- }
- void fun(string& p){
- cout << p << endl;
- }
- void work(){
- //开始的处理,起点标记
- vis[][] = true;
- node T(, );
- T.vec.push_back("(0, 0)");
- queue<node> que;
- que.push(T);
- while (!que.empty()){
- node tmp = que.front();
- que.pop();
- rep__(p, , ){
- //人的移动
- int dx = tmp.x + mv_x[p];
- int dy = tmp.y + mv_y[p];
- //没越界 是可以走的 没访问过
- if (check(dx, dy) && mp[dx][dy] == '' && !vis[dx][dy]){
- vis[dx][dy] = true; //标记
- node in = tmp;
- in.x = dx;
- in.y = dy;
- string t = "(x, x)";
- t[] = '' + dx;
- t[] = '' + dy;
- in.vec.push_back(t); //把新的点压入
- if (dx == && dy == ){ //遇到了出口,输出路线
- for_each(in.vec.begin(), in.vec.end(), fun);
- return;
- }
- que.push(in); //把新的状态压入队列
- }
- }
- }
- }
- int main(){
- ios::sync_with_stdio(false);
- cin.tie();
- input();
- work();
- return ;
- }
kuangbin专题 专题一 简单搜索 迷宫问题 POJ - 3984的更多相关文章
- Q - 迷宫问题 POJ - 3984(BFS / DFS + 记录路径)
Q - 迷宫问题 POJ - 3984 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, ...
- 迷宫问题 POJ - 3984 [kuangbin带你飞]专题一 简单搜索
定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, ...
- kuangbin专题总结一 简单搜索
A - 棋盘问题:在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有 ...
- kuangbin专题 专题一 简单搜索 Prime Path POJ - 3126
题目链接:https://vjudge.net/problem/POJ-3126 题意:给你两个四位的素数N,M,每次改变N四位数中的其中一位,如果能经过有限次数的替换变成四位数M,那么求出最少替换次 ...
- kuangbin专题 专题一 简单搜索 Dungeon Master POJ - 2251
题目链接:https://vjudge.net/problem/POJ-2251 题意:简单的三维地图 思路:直接上代码... #include <iostream> #include & ...
- kuangbin专题 专题一 简单搜索 棋盘问题 POJ - 1321
题目链接:https://vjudge.net/problem/POJ-1321 题意:给一张棋盘,‘#’表示可以下棋的地方,‘.’表示不能下棋的地方.棋盘是n*n的,要求能放下k个棋子,要求k个棋子 ...
- 迷宫问题 POJ - 3984 (搜索输出路径)
题目大意 题目不需要大意,poj居然还有中文题 鸣谢 特别鸣谢ljc大佬提供的方法!!! 解法 我们可能输出个最短路径的长度比较简单,但是输出最短路径真的是没有做过,这里有一种简单的方法 因为我们的d ...
- 迷宫问题-POJ 3984
迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 24348 Accepted: 14206 Descriptio ...
- K - 迷宫问题 POJ - 3984
定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, ...
随机推荐
- 注册.NET Framework 到IIS服务器
一.注册.NET 4.0 32位的Windows:--------------------------------------------------------------------------- ...
- MyBatis 问题 & 解决
# 问题 Invalid bound statement (not found) # 解决 <mappers> 标签的包括的是 SQL 语句存在的地方,此外 <mapper> ...
- WPF之VirtualizingStackPanel.IsVirtualizing="False"
原文:WPF之VirtualizingStackPanel.IsVirtualizing="False" 相信从winform转到wpf的人都遇到过这样的困惑,在处理DataGri ...
- Win8 Metro(C#)数字图像处理--2.63图像指数增强
原文:Win8 Metro(C#)数字图像处理--2.63图像指数增强 [函数名称] 指数增强 WriteableBitmap IndexenhanceProcess(Writea ...
- 深度学习概述教程--Deep Learning Overview
引言 深度学习,即Deep Learning,是一种学习算法(Learning algorithm),亦是人工智能领域的一个重要分支.从快速发展到实际应用,短短几年时间里, ...
- 【C++】小心使用文件读写模式:回车('\r') 换行('\n')问题的一次纠结经历
原来没有仔细注意C++读写文件的二进制模式和文本模式,这次吃了大亏.(平台:windows VS2012) BUG出现: 写了一个程序A,生成一个文本文件F保存在本地,然后用程序B读取此文件计算MD ...
- Win10《芒果TV》商店版2016-2017春节大礼,每日前100名用户免费领取7天VIP
告别2016,喜迎2017,鸡年大吉,春节期间,每天登录Win10<芒果TV>商店版的前100位用户可领取一张芒果TV会员7天体验卡,先到先得. 芒果TV会员权益: 1.全站免广告 2.自 ...
- 社会不是承认有学历的人, 而是承认努力过得人, 而且是真正努力过不是穷忙的人(没有学历就要多付出一倍的努力)good
送你一句 这就是你水平差的理由? 楼主你工资低是因为你技术不行, 不想努力然后怪罪学历, 为什么学历高的混得好, 因为学历高的人努力过, 你没学历技术还不行, 凭什么证明你努力过, 社会不是承认有学历 ...
- Qt浅谈之二:钟表(时分秒针)
一.简介 QT编写的模拟时钟,demo里的时钟只有时针和分针,在其基础上添加了秒针,构成了一个完整的时钟.能对2D绘图中坐标系统.平移变换(translate).比例变换(scale).旋转变换(ro ...
- Qt优雅地结束线程(两种方法都是用Mutex锁住bool变量进行修改,然后由bool变量控制耗时动作的退出,即正常退出)
如果一个线程运行完成,就会结束.可很多情况并非这么简单,由于某种特殊原因,当线程还未执行完时,我们就想中止它.不恰当的中止往往会引起一些未知错误.比如:当关闭主界面的时候,很有可能次线程正在运行,这时 ...