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 ...
随机推荐
- p2p-tunnel 打洞内网穿透系列(二)TCP转发访问内网共享文件夹
系列文章 p2p-tunnel 打洞内网穿透系列(一)客户端配置及打洞 p2p-tunnel 打洞内网穿透系列(二)TCP转发访问远程共享文件夹 p2p-tunnel 打洞内网穿透系列(三)TCP转发 ...
- 【java并发编程】Lock & Condition 协调同步生产消费
一.协调生产/消费的需求 本文内容主要想向大家介绍一下Lock结合Condition的使用方法,为了更好的理解Lock锁与Condition锁信号,我们来手写一个ArrayBlockingQueue. ...
- 使用NE555实现的延时开关电路
NE555 的工作机制 先了解 NE555 的 Trigger(Pin2) 和 Threshold(Pin6) 如何检测电压并控制输出 如果 Trigger(Pin2) 检测到任何低于电源电压1/3的 ...
- 用python实现自动化登录禅道系统 设置定时器自动执行脚本
由于各种原因,我想试下用python实现自动登录禅道系统,并且每天定时执行.(本人第一次接触自动化,在大佬眼中门槛都没摸到的类型) 首先缕清思路: 1.实现自动登录禅道系统,用selenium实现2. ...
- 数仓选型必列入考虑的OLAP列式数据库ClickHouse(中)
实战 案例使用 背景 ELK作为老一代日志分析技术栈非常成熟,可以说是最为流行的大数据日志和搜索解决方案:主要设计组件及架构如下: 而新一代日志监控选型如ClickHouse.StarRocks特别是 ...
- 个人冲刺(一)——体温上报app(一阶段)
任务:完成了体温上报app的整体页面布局 activity_main.xml <?xml version="1.0" encoding="utf-8"?& ...
- 浅谈BSGS和EXBSGS
我的 BSGS 和各位犇犇的差不多,但是不需要求逆元 Luogu [ TJOI2007 ] 可爱的质数 原题展现 题目描述 给定一个质数 \(p\),以及一个整数 \(b\),一个整数 \(n\),现 ...
- 【freertos】011-信号量、互斥量及优先级继承机制源码分析
目录 前言 11.1 任务同步 11.2 信号量概念 11.3 二值信号量 11.3.1 二值信号量概念 11.3.2 优先级翻转 11.3.3 二值信号量运作机制 11.4 计数信号量 11.4.1 ...
- 数据库常用DDL语句
一.创建表 CREATE TABLE TABLE_NAME( #create table 表名 ID INT(4) PRIMARY KEY, #字段名 数据类型 完整性约束条件 NAME VARCHA ...
- DYOJ 【20220317模拟赛】瞬间移动 题解
瞬间移动 题意 三维空间中从 \((0,0,0)\) 开始,每次移动 1,问刚好走 \(N\) 次能到 \((X,Y,Z)\) 的方案数 \(N\le10^7\),答案模 \(998244353\) ...