当前位置: 首页 > news >正文

杭州滨江区建设局网站最好的做法是()。

杭州滨江区建设局网站,最好的做法是()。,怎样做旅游城市住宿网站,wordpress iis 500.50资源限制 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 勇士们不小心进入了敌人的地雷阵(用n行n列的矩阵表示,*表示某个位置埋有地雷,-表示某个…

资源限制

内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  勇士们不小心进入了敌人的地雷阵(用n行n列的矩阵表示,'*'表示某个位置埋有地雷,'-'表示某个位置是安全的),他们各自需要在规定的步数(一步代表走到和当前位置相邻的位置)内绕开地雷到达出口(第一行第一格,即坐标为(0,0)的位置)才能完成任务,告诉你每个勇士的位置(x,y)和规定的步数s,请你判断每个勇士能否顺利完成任务(1代表“能”,-1代表“不能”)。

输入格式

  输入数据的第一行为一个整数n;第二行至第n+1行是n行n列地雷阵的矩阵表示(见输入样例);第n+2行至最后一行每行是一个勇士的位置x、y和到达出口规定的最大步数s,三个整数间用空格隔开。

输出格式

  按顺序输出对每个勇士是否能顺利完成任务的判断(1代表“能”,-1代表“不能”),对每个勇士的判断占一行。

样例输入

5
-----
--*--
-**--
-**--
*-*--
0 1 1
0 4 3
1 1 3
1 4 2
2 0 3
3 0 4
3 3 2
4 1 3

样例输出

1
-1
1
-1
1
1
-1
-1

数据规模和约定

  1≤n≤500,0≤x≤n-1,0≤y≤n-1,1≤s≤500

对每一个要求的判断的点都进行bfs,超时,仅供理解题意

#include<iostream>
#include<queue>
#include<string.h>
using namespace std;
const int N=505;
typedef struct point{int x;int y;int step;
}point;int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};int main(){int n;cin>>n;char map[N][N];for(int i=0;i<n;i++){for(int j=0;j<n;j++){cin>>map[i][j];}}int x,y,num;while(cin>>x>>y>>num){queue<point> q;bool st[N][N];memset(st,0,sizeof(st));point start;start.x=x;start.y=y;start.step=0;q.push(start);//bfswhile(q.size()){point p=q.front();if(p.x==0&&p.y==0){break;}for(int i=0;i<4;i++){int a=p.x+dx[i],b=p.y+dy[i];if(a>=0&&a<n&&b>=0&&b<n&&!st[a][b]&&map[a][b]=='-'){st[a][b]=true;point next;next.x=a,next.y=b,next.step=p.step+1;q.push(next);}}q.pop();}if(q.size()==0){cout<<"-1"<<endl;}else{if(q.front().step<=num){cout<<1<<endl;}else cout<<-1<<endl;}}return 0;
} 

bfs一次

#include<iostream>
#include<queue>
#include<string.h>
using namespace std;
const int N=505;
typedef struct point{int x;int y;int step;
}point;int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
char map[N][N];
int dist[N][N];//(0,0)到点的距离,如果无法到达(x,y)点,dist为0 
bool st[N][N];
queue<point> q;
int n;void bfs(){while(q.size()){point p=q.front();for(int i=0;i<4;i++){int a=p.x+dx[i],b=p.y+dy[i];if(a>=0&&a<n&&b>=0&&b<n&&!st[a][b]&&map[a][b]=='-'){st[a][b]=true;point next;next.x=a,next.y=b,next.step=p.step+1;dist[a][b]=p.step+1;q.push(next);}}q.pop();}
}
int main(){cin>>n;for(int i=0;i<n;i++){for(int j=0;j<n;j++){cin>>map[i][j];}}point start;start.x=0,start.y=0,start.step=0;q.push(start);bfs();int x,y,num;while(cin>>x>>y>>num){//dist为0有两种情况,第一种是真的步数为0,第二种是到不了 if(x==0&&y==0) cout<<1<<endl;//第一种 else{if(dist[x][y]!=0&&dist[x][y]<=num){//在能到的前提下,步长小于等于num 可行 cout<<1<<endl; }else cout<<-1<<endl;}}return 0;
} 

思路:在判断之前,可以求出(0,0)到其他任何点的步数 ,存在dist数组中,然后对每一个点进行判断。

http://www.yayakq.cn/news/553410/

相关文章:

  • 免费做情网站oa系统登录界面
  • 嘉兴自助模板建站浅谈旅游网站的规划与建设
  • 开封市网站建设软件外包公司排名
  • 新网站怎么做外链中恒诚信建设有限公司网站
  • 购物网站设计的目的前端培训
  • 网站开发三大元素请简述常用的网页制作工具
  • 网站建设中端口号的作用是什么意思线上销售水果营销方案
  • 做谷歌网站吗建立网站的流程
  • dz门户网站模板有深度的公司名字
  • 西安高端网站建设哪家好wordpress获取访问位置
  • 山西营销网站建设设计收录网站有哪些
  • 商务网站需求分析微网站的优缺点
  • 网站开发都做什么网站建设 域名注册
  • 网站建设报价单初期整理网页图片加载不出来是什么原因
  • 网站设计团队分工135网站模板
  • 长沙网站seo分析建设网站什么软件比较好
  • 百度网站链接提交页面企业宣传片脚本
  • 江苏省建设工程网站微信管理系统下载
  • 高端网站开发环境阜宁做网站的价格
  • 龙岗网站建设技术seo网站优化课程
  • 传媒网站关于公司申请建设门户网站的请示
  • 大美工网站wordpress linux 安装
  • 医院加强网站建设自己做的网站如何上百度
  • 企业建站费用情况网络销售许可证
  • 艺术家个人网站设计专业的集团网站制作企业
  • 前端网站做中 英文怎么说如何免费建设自己稳定的网站
  • 苏州有哪些做网站公司平面设计的素材网站
  • 做电子请帖的网站品牌策划公司是做什么的
  • 校园网站建设目的wordpress下不了插件吗
  • 网站开发用什么框架好成都市建筑设计研究院有限公司