SP96 SHOP-Shopping 题解
\(To\) \(SP96\)
这是一道比较简单的 \(bfs\) ,初学者可以锻炼一下自己理解题意和改代码的能力。
题目中有几个细节:
- \(n\) 和 \(m\) 的输入顺序,应该先输入 \(m\) ,再输入 \(n\) 。
- 输入时如果用的是 \(scanf\) ,要注意对换行符的处理。
- 当 \(n=0\) \(m=0\) 时,结束输入。
- 注意初始化。
一般的 \(bfs\) 则是开一个数组来储存这个点有无访问过,可是这道题,所要求的是最短时间,因此访问过的点不一定是最优路径,因此,应该换一种思路,重开一个数组来储存到达这个点的最短时间。
#include<cstdio>
#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
struct node{
int x;
int y;
int time;
};
int n,m;
char mp[5000][5000];
int vis[5000][5000];
queue<node> Q;
int sx,sy,ex,ey;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
int main(){
while(1){
scanf("%d%d",&m,&n);//输入的时候注意m和n的顺序
if(n==0&&m==0){//结束输入
break;
}
memset(mp,0,sizeof(mp));
memset(vis,0x7,sizeof(vis));
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
scanf(" %c",&mp[i][j]);//过滤换行符
if(mp[i][j]=='S'){//储存起点坐标
sx=i;
sy=j;
}
if(mp[i][j]=='D'){//储存终点坐标
ex=i;
ey=j;
}
}
}
node a,b,c;
a.x=sx;
a.y=sy;
a.time=0;
Q.push(a);
while(!Q.empty()){
b=Q.front();
Q.pop();
for(int i=0;i<4;i++){
c.x=b.x+dx[i];
c.y=b.y+dy[i];
if(c.x==ex&&c.y==ey){
if(vis[ex][ey]>b.time) vis[ex][ey]=b.time;
}
if(c.x>=0&&c.x<n&&c.y>=0&&c.y<m&&mp[c.x][c.y]>='1'&&mp[c.x][c.y]<='9'){
c.time=b.time+(mp[c.x][c.y]-'0');
if(c.time<vis[c.x][c.y]) vis[c.x][c.y]=c.time;
else continue;//如果此方案无法更优,则直接废除此方案
a.x=c.x;
a.y=c.y;
a.time=c.time;
Q.push(a);
}
}
}
printf("%d\n",vis[ex][ey]);
while(!Q.empty()){//清空队列
Q.pop();
}
}
return 0;
}
SP96 SHOP-Shopping 题解的更多相关文章
- OWASP JUICE SHOP部分题解
本文作者:S0u1 0×00 简介 OWASP JUICE SHOP是一个开源的web应用靶场,里面包含了共记47个漏洞挑战任务,囊括了OWASP TOP 10的各个点,是一个很不错的渗透测试练手项目 ...
- openjpa框架入门_项目框架搭建(二)
Openjpa2.2+Mysql+Maven+Servlet+JSP 首先说明几点,让大家更清楚整体结构: 官方source code 下载:http://openjpa.apache.org/dow ...
- 第二十二天 logging hashlib re 模块
今日内容 logging功能完善的日志模块 re正则表达式模块主要处理字符串匹配 查找 搜索给你一个字符串 要从中找到你需要的东西 爬虫大量使用 hashlib hash算法相关的库 算法怎么算不需要 ...
- java并发编程(三)----线程的同步
在现实开发中,我们或多或少的都经历过这样的情景:某一个变量被多个用户并发式的访问并修改,如何保证该变量在并发过程中对每一个用户的正确性呢?今天我们来聊聊线程同步的概念. 一般来说,程序并行化是为了获得 ...
- PAT甲题题解-1044. Shopping in Mars (25)-水题
n,m然后给出n个数让你求所有存在的区间[l,r],使得a[l]~a[r]的和为m并且按l的大小顺序输出对应区间.如果不存在和为m的区间段,则输出a[l]~a[r]-m最小的区间段方案. 如果两层fo ...
- 题解 【POJ1157】LITTLE SHOP OF FLOWERS
先把题目意思说一下: 你有F束花,编号为\(1\)~\(F\)(\(1<=F<=100\)),\(V\)个花瓶,编号为\(1\) ~\(V\)(\(1<=V<=100\)), ...
- Codeforces Gym 100803C Shopping 贪心
Shopping 题目连接: http://codeforces.com/gym/100803/attachments Description Your friend will enjoy shopp ...
- Codeforces Round #332 (Div. 2) A. Patrick and Shopping 水题
A. Patrick and Shopping Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/5 ...
- USACO 3.3 Shopping Offers
Shopping OffersIOI'95 In a certain shop, each kind of product has an integer price. For example, the ...
随机推荐
- WinUI3开发笔记(Ⅰ)
·背景:自从接触了微软的WinUI3的界面,瞬间觉得C# .NetFramework不香了,于是入坑网上教程极少的WinUI3的开发...... 难 (一,安装开发环境) 具体参考微软官网说明http ...
- 312. Burst Balloons - LeetCode
Question https://leetcode.com/problems/burst-balloons/description/ Solution 题目大意是,有4个气球,每个气球上有个数字,现在 ...
- vue生命周期加载顺序
1.beforeCreate(创建前)表示实例完全被创建出来之前,vue 实例的挂载元素$el和数据对象 data 都为 undefined,还未初始化.此钩子函数不能获取到数据,dom元素也没有渲染 ...
- 以点类 Point 及平面图形类 Plane 为基础设计三角形类 Triangle
学习内容:以点类 Point 及平面图形类 Plane 为基础设计三角形类 Triangle 代码示例: import java.util.Scanner; class Point{ private ...
- 选择器补充与CSS属性
目录 伪元素选择器 选择器优先级 CSS属性 宽和高 字体样式 文字属性 背景属性 边框属性 display属性 盒子模型 浮动(float) 清除浮动 伪元素选择器 伪元素选择器可以通过CSS操作文 ...
- 对比不同版本windows对libreoffice的支持情况
由于最近需要用到libreoffice进行对文档转换为pdf,不光需要考虑在linux下的表现,还需要对比下Windows下的兼容性. 在网上各个论坛都找了下,以及libreoffice的中文社区发帖 ...
- SmartIDE v0.1.17 已经发布 - 模版库远程模式和插件市场公测
SmartIDE v0.1.17 已经发布,本次同步更新了CLI (Build 3332) 的稳定版通道和Server (Build 3333) 生产环境(内测中).请参考对应的 安装说明 获取最新版 ...
- Unity-UGUI-无限循环列表
前言:项目准备新增一个竞技场排行榜,策划规定只显示0-400名的玩家.我一想,生成四百个游戏物体,怕不是得把手机给卡死?回想原来在GitHub上看到过一个实现思路就是无限循环列表,所以就想自己试试.公 ...
- MySQL锁(乐观锁、悲观锁、多粒度锁)
锁 并发事务可能出现的情况: 读-读事务并发:此时是没有问题的,读操作不会对记录又任何影响. 写-写事务并发:并发事务相继对相同的记录做出改动,因为写-写并发可能会产生脏写的情况,但是没有一个隔离级别 ...
- iOS全埋点解决方案-采集奔溃
前言 采集应用程序奔溃信息,主要分为以下两种场景: NSException 异常 Unix 信号异常 一.NSException 异常 NSException 异常是 Objectiv ...