题目

题目描述

小A在WOW中是个小术士.作为一名术士,不会单刷副本是相当丢脸的.所谓单刷副本就是单挑BOSS了,这么有荣誉感的事小A怎么会不做呢?于是小A来到了厄运之槌开始了单刷.小A看了看,厄运之槌的地图是一个N*M的矩形(N,M<=100),上面遍布了小怪和传送门.例如(1表示有小怪,0表示无小怪,大写字母表示传送门,传送门:例如,走到 B 传送门点将传送到另一个 B 传送点(次数无限,但每次进入传送点只传送过去,不会在传送回来)数据保证每个传送门有且仅有相对应的另一个传送门):

      而入口在左上方(1,1),BOSS却躲在右下方(N,M).小A非常急切的想要完成单刷然后去向其他那些战士啊盗贼啊不会单刷的职业炫耀炫耀,所以呢,小A绝不会在小怪身上浪费时间(当然是绕开他们),并且想通过传送门尽快到达BOSS身边.看啊看,想啊想,还是没找出最快的路.终于,灵机一动,想什么啊,编程呗!

[样例说明]
路线如图:

输入

第一行2个数据:n m;
下面n行,每行m个数(入口点和BOSS点无怪和传送门),表示厄运之槌的地图。地图数据之间无空格。每步只能走一格,方向上下左右。左上角为入口点,右下角为出口点.

输出

一个整数,表示小A最少需要走多少步。如果小A不能走到目标,则输出No Solution.

输入样例复制

3 4
0000
00A0
A000

输出样例复制

4

说明

对60%的数据,n,m<=20 对100%的数据,n,m<=100
分析
   首先是一道搜索题很显然,dfs会爆,我们就用bfs
     但这道题的关键是当遇到传送们的时候我们该怎么办呢?
     找到另一个传送门
     我们可以将传送门的位置进入队列之中
     将下一步的值覆盖在传送门上
     问题便解决了
代码
 1 #include<bits/stdc++.h>
 2 #include<cstdio>
 3 #include<queue>
 4 using namespace std;
 5 int n,m;
 6 char ss[101];
 7 bool flag[101][101];
 8 int v[101][101];
 9 int a[101][101];
10 int fx[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
11 int x,y;
12 int ans=1e9;
13 void bfs()
14 {
15     memset(v,0x7f,sizeof(v));
16     v[1][1]=0;
17     x=1;
18     y=1;
19     int s1,s2;
20     queue<int> q;
21     q.push(x);
22     q.push(y);
23     while (!q.empty())
24     {
25         s1=q.front();
26         q.pop();
27         s2=q.front();
28         q.pop();
29         int k=v[s1][s2]+1;
30         for (int i=0;i<4;i++)
31         {
32             if (a[s1+fx[i][0]][s2+fx[i][1]]==1&&s1+fx[i][0]<1&&s1+fx[i][0]>n&&s2+fx[i][1]<1&&s2+fx[i][1]>m) continue;
33             if (a[s1+fx[i][0]][s2+fx[i][1]]>9&&flag[s1+fx[i][0]][s2+fx[i][1]]==0)
34             {
35                 flag[s1+fx[i][0]][s2+fx[i][1]]=1;
36                 for (int ii=1;ii<=n;ii++)
37                   for (int jj=1;jj<=m;jj++)
38                      if (a[s1+fx[i][0]][s2+fx[i][1]]==a[ii][jj]&&(ii!=s1+fx[i][0]||jj!=s2+fx[i][1]))
39                      {
40                          v[ii][jj]=min(k,v[ii][jj]);
41                          q.push(ii);
42                         q.push(jj);
43                      }
44             }
45             else if (v[s1+fx[i][0]][s2+fx[i][1]]==2139062143&&a[s1+fx[i][0]][s2+fx[i][1]]==0&&s1+fx[i][0]>=1&&s1+fx[i][0]<=n&&s2+fx[i][1]>=1&&s2+fx[i][1]<=m)
46             {
47                 if (s1+fx[i][0]==n&&s2+fx[i][1]==m)
48                   ans=min(k,ans);
49                 q.push(s1+fx[i][0]);
50                 q.push(s2+fx[i][1]);
51                 v[s1+fx[i][0]][s2+fx[i][1]]=min(k,v[s1+fx[i][0]][s2+fx[i][1]]);
52             }
53         if (s1+fx[i][0]==n&&s2+fx[i][1]==m)
54             ans=min(k,ans);
55         }
56     }
57 }
58 int main ()
59 {
60     cin>>n>>m;
61     for (int i=1;i<=n;i++)
62     {
63           scanf("%s",ss+1);
64          for (int j=1;j<=m;j++)
65             a[i][j]=ss[j]-48;
66    }
67     bfs();
68     if (ans!=1e9)
69     cout<<ans;
70     else
71      cout<<"No Solution.";
72 }

转载于:https://www.cnblogs.com/zjzjzj/p/9692596.html

9月22日 魔兽世界相关推荐

  1. 魔兽世界3.3.5 TrinityCore2020年3月22日编译端

    魔兽世界3.3.5 TrinityCore2020年3月22日编译端 自己转发自己的贴子...(仅供学习测试使用) 2020年03月22日 TrinityCore+AyaseCore的库完全汉化 20 ...

  2. 2021年4月22日 阿里供应链Java开发实习面试(三面)(含总结)

    title: 2021年4月22日 阿里供应链Java开发实习面试(三面) tags: 面经 2021年4月22日 阿里供应链Java开发实习面试(三面) 上来就手撕一道代码--输入一个数,然后顺时针 ...

  3. 定档12月22日!《黑客帝国4》王者归来,再掀矩阵革命

    [导读]距离上一部18年后,黑客帝国4将华丽归来,定档21年!女主演近期接受采访时透露,这部电影将带来全新的行业技术变革,包括前所未有的摄像设备.「子弹时间」.创纪录的百人动作捕捉等经典瞬间已经永留影 ...

  4. 一周第一次课笔记(1月22日)

    一周第一次课(1月22日) 1.1学习之初 1.2约定 1.3认识Linux 1.4安装虚拟机 1.5安装centos7 1.1学习之初 学习之前合理定位自己 给自己设定1个合理目标 计划好学习的期限 ...

  5. 9月22日我国垃圾邮件报告:湖北省再居榜首

    据中国互联网协会反垃圾信息中心发布的实时统计数据显示,9月22日,国内垃圾邮件发送服务器IP地址主要集中在湖北省.河南省和北京市等地区.其中,湖北省垃圾邮件发送服务器IP地址高达917个,河南达717 ...

  6. 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(4月16日-4月22日)

    分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(4月16日-4月22日) 本周Silverlight学习资源更新 银光中国网友原创:Silverlight中获取 ...

  7. 金碧辉煌!皇城定制5月22日正式对外运营开业!

    2016年5月20日,皇城定制创始人宋沁沁发布声明:"皇城定制将于5月22日正式对外运营开业!"开业的地点,选在深圳市福田区皇御苑皇城广场352号,皇城定制诚邀广大消费者光临现场! ...

  8. jq 控制td只显示一行_9月22日现货黄金、白银TD、黄金TD、纸黄金、纸白银价格走势分析...

    前言:你必须在两者之间选择:你想拥有一部造钱机,还是将自己变成造钱机. [9月22日黄金交易所开盘] 上海黄金交易所黄金TD 凌晨收盘报405.4元/克: 上海黄金交易所白银TD 凌晨收盘报5.261 ...

  9. 仙道服务器维护,5月22日8:00全区停机维护 刺金传说上线

    亲爱的灵芝们: 我们将于5月22日8:00对全区全服进行停机维护,对服务器进行全面的检查和维护工作,同时,修复部分已知问题. 届时您将无法登陆游戏,所有活动在维护期间也将暂停.此外,在维护期间,账号充 ...

最新文章

  1. 构建DHCP及中继服务器
  2. java面向对象认定的特征_Java面向对象的三大特征(一)
  3. maven junit scope test坑
  4. 【Linux部署】Spring Boot 项目部署在Linux环境下的Docker容器内举例【任务调度系统 xxl-job 任务调度中心】(手动版)
  5. Python-OpenCV基本操作cv2
  6. 3d 自动生成物体_根据 2D 图片自动生成 3D 图书封面的牛逼工具
  7. Windows Server 2008 R2 MSDN ISO镜像简体中文版和英文版下载
  8. 怎么一键重装系统?装机大师一键重装图文教程
  9. FOSSID(开源代码检测工具)
  10. Java类和对象:private/public/friendly/封装
  11. html5桌面打开网页是有问号,点击HTML页面问号出现提示框
  12. XML 大于号 小于号 处理
  13. 创建一个urdf机器人_ROS机器人Diego制作16-创建机器人的urdf模型描述文件
  14. html中li的圆点,CSS中li圆点样式
  15. wsl虚拟机ubuntu安装宝塔要知道的
  16. 基于ArcGIS水文分析、HEC-RAS模拟技术在洪水危险性及风险评估
  17. 逍遥安卓模拟器卡android,逍遥安卓模拟器很卡怎么办?
  18. 1.数组简介:什么是数组???数组有哪四要素???
  19. Excel合并多列增加指定字符指定字符替换为换行符调整行高步骤
  20. 如何进行特征工程,以及特征工程的一些理论

热门文章

  1. 酒鬼私定,只是酒鬼酒一次破圈营销?
  2. 基于聚类的推荐算法笔记——以豆瓣电影为例(三)(附源代码)
  3. 基于php的酒店预订信息管理系统(自动化管理)
  4. 2021最新收集的CSGO国内网页开箱子网站大全!
  5. PHP自定义生成图片——静态
  6. 求一个文章原创检测工具源码 C#的 谢谢 私我
  7. IntelliJ IDEA IDEtalk
  8. 2.旋转的骰子(1)
  9. 【8042】产品记分板
  10. Python 基础的语法用法