当前位置: 首页 > 编程日记 > 正文

HDU1548:A strange lift(Dijkstra或BFS)

题目链接

http://acm.hdu.edu.cn/showproblem.php?pid=1548

题意:电梯每层有一个数,例如第n层有个数k,

那么这一层只能上k层或下k层,但是不能低于一层或高于n层,

给定起点与终点,要求出最少要按几次键

我的思路:这题可以用bfs或者用最短路(dijsktra)

bfs

AC代码

#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;

int n,a,b,dis[210],vis[210];

struct node
{
int now;
int step;
};

int main(void)
{
int bfs();
int i;
while(scanf("%d",&n)==1&&n)
{
memset(vis,0,sizeof(vis));
scanf("%d%d",&a,&b);
for(i=1;i<=n;i++)
scanf("%d",dis+i);
printf("%d\n",bfs());
}
return 0;
}

int bfs()
{
int i;
queue<node> q;
vis[a]=1;
node start,next;
start.now=a;
start.step=0;
q.push(start);
while(!q.empty())
{
node s=q.front();
q.pop();
if(s.now==b)
return s.step;
for(i=0;i<2;i++)
{
if(0==i)
next.now=s.now+dis[s.now];
else
next.now=s.now-dis[s.now];
if(!vis[next.now]&&next.now>=1&&next.now<=n)
{
if(next.now==b)
return s.step+1;
vis[next.now]=1;
next.step=s.step+1;
q.push(next);
}
}
}
return -1;
}

最短路算法

#include<stdio.h>
#include<string.h>

int n,a,b,dis[210],vis[210],map[210][210];
const int Max = 0x3f3f3f3f;

int main(void)
{
int i,j,k,l;
while(scanf("%d",&n)==1&&n)
{
memset(vis,0,sizeof(vis));
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i!=j)
map[i][j]=Max;
else
map[i][j]=0;
}
}
scanf("%d%d",&a,&b);
for(i=1;i<=n;i++)
{
scanf("%d",dis+i);
if(i-dis[i]>=1&&i+dis[i]<=n)
map[i][i-dis[i]]=map[i][i+dis[i]]=1;
else if(i-dis[i]>=1)
map[i][i-dis[i]]=1;
else
map[i][i+dis[i]]=1;
}
for(i=1;i<=n;i++)
dis[i]=map[a][i];
for(i=1;i<=n;i++)
{
l=Max;
for(j=1;j<=n;j++)
{
if(!vis[j]&&l>dis[j])
{
k=j;
l=dis[j];
}
}
if(l==Max) break;
vis[k]=1;
for(j=1;j<=n;j++)
{
if(!vis[j]&&dis[j]>dis[k]+map[k][j])
dis[j]=dis[k]+map[k][j];
}
}
if(dis[b]==Max)
printf("-1\n");
else
printf("%d\n",dis[b]);
}
return 0;
}

转载于:https://www.cnblogs.com/liudehao/p/3914314.html

相关文章:

(转)C语言位运算详解

地址&#xff1a;http://www.cnblogs.com/911/archive/2008/05/20/1203477.html C语言位运算详解 作者&#xff1a;911说明&#xff1a;本文参考了http://www2.tsu.edu.cn/www/cjc/online/cyuyan/&#xff0c;算是对其的修正&#xff0c;在此将本文列为原创&#xff0c;实有抄袭…

[bzoj2300] [HAOI2011]防线修建

Description 近来A国和B国的矛盾激化&#xff0c;为了预防不测&#xff0c;A国准备修建一条长长的防线&#xff0c;当然修建防线的话&#xff0c;肯定要把需要保护的城市修在防线内部了。可是A国上层现在还犹豫不决&#xff0c;到底该把哪些城市作为保护对象呢&#xff1f;又由…

leetcode-142 环形链表II

给定一个链表&#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 为了表示给定链表中的环&#xff0c;我们使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;索引从 0 开始&#xff09;。 如果 pos 是 -1&#xff0c;则在该链表中没有…

1.低权限的程序向高权限的程序发消息 2.慎用setcurrentdirectory

1.低权限的程序向高权限的程序发消息 2.慎用setcurrentdirectory转载于:https://www.cnblogs.com/chunyou128/p/3921903.html

增加service_.NET Core + Kubernetes:Service

通过 .NET Core Kubernetes&#xff1a;Deployment 文章的介绍&#xff0c;我们可以通过 Deployment 控制器快速创建一组 Pod 来提供服务&#xff0c;每个 Pod 都会被分配一个集群内可见的虚拟 IP 地址&#xff0c;然后通过一个独立的 Endpoint(Pod IP ContainerPort)进行访问…

IIS配置相关问题:Framework 4.5 在IIS 7.5中运行

<system.webServer> <validation validateIntegratedModeConfiguration"false" /> <!--4.5 在IIS7.5中运行的时候--> <modules runAllManagedModulesForAllRequests"true" /> </system.webServer>转载于:https://…

[优先队列] 洛谷 P2085 最小函数值

题目描述 有n个函数&#xff0c;分别为F1,F2,...,Fn。定义Fi(x)Ai*x^2Bi*xCi (x∈N*)。给定这些Ai、Bi和Ci&#xff0c;请求出所有函数的所有函数值中最小的m个&#xff08;如有重复的要输出多个&#xff09;。 输入输出格式 输入格式&#xff1a; 输入数据&#xff1a;第一行输…

leetcode-86 分隔链表

给定一个链表和一个特定值 x&#xff0c;对链表进行分隔&#xff0c;使得所有小于 x 的节点都在大于或等于 x 的节点之前。 你应当保留两个分区中每个节点的初始相对位置。 示例: 输入: head 1->4->3->2->5->2, x 3 输出: 1->2->2->4->3->5 …

[WCF编程]1.WCF入门示例

一、WCF是什么&#xff1f; Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架&#xff0c;整合了原有的windows通讯的 .net Remoting&#xff0c;WebService&#xff0c;Socket的机制&#xff0c;并融合有Http和Ftp的相关技术&#xff0c…

ios 自动打包命令_iOS自动打包上传脚本

自从将swift2.2升级到swift3.0, 每次使用Xcode8编译都很慢&#xff0c;很是不爽&#xff0c;于是有了研究下xcodebuild命令行打包的想法&#xff0c;起初不知道用shell&#xff0c;还是用python, 在网上大概搜了一下&#xff0c;关于python的比较多点&#xff0c;于是就先学习p…

linux系统下添加新硬盘的方法详解

对于linux新手来说&#xff0c;在linux上添加新硬盘&#xff0c;是很有挑战性的一项工作。在Linux服务器上把硬盘接好&#xff0c;启动linux&#xff0c;以root登陆。 fdisk -l ## 这里是查看目前系统上有几块硬盘 Disk /dev/sda: 36.4 GB, 36401479680 bytes 255 heads, 63 s…

【CF EDU59 E】 Vasya and Binary String (DP)

题意 给一串01串&#xff0c;对该串进行若干次操作&#xff0c;直到串为空 操作为&#xff1a;选择一段连续的0或者1,删除它&#xff0c;拼接前后两部分成为新串&#xff0c;得到价值为a[删除的长度]&#xff08;a为给定的数组&#xff09; 思路 一个非常规的DP 考虑题目所给的…

leetcode-21 合并两个有序链表

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例&#xff1a; 输入&#xff1a;1->2->4, 1->3->4 输出&#xff1a;1->1->2->3->4->4 总体思路是&#xff1a; 比较两个链表头节点&#xff0c…

log4cxx第三篇----使用多个logger

使用多个logger时&#xff0c;所有logger的配置写在一个配置文件里面 两个例子&#xff1a; 1 一个继承的例子&#xff08;http://logging.apache.org/log4cxx/&#xff09; // file com/foo/bar.h #include "log4cxx/logger.h"namespace com {namespace foo {class…

authy不同账户间不同步_「第七期」shopify产品还能同步到微信小程序销售?看这里...

众所周知&#xff0c;微信坐拥12亿用户&#xff0c;已经是国民应用&#xff0c;而其中小程序依托于微信生态日活已经超过4亿&#xff0c;对于国内的一些商家来讲是不可错过的流量圣地&#xff0c;那么对于做跨境的朋友来讲怎么利用起来了&#xff1f;今天给大家介绍一款无缝对接…

Ubuntu环境变量

2019独角兽企业重金招聘Python工程师标准>>> Ubuntu 环境变量 环境变量配置文件 在Ubuntu中有如下几个文件可以设置环境变量 1、 /etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执…

mysql 免安装

1. 解压得到如下目录 2. 配置环境变量 D:\Program Files\mysql-5.7.11-winx64\bin 3. 安装的根目录&#xff0c;新增 my.ini 文件 [mysqld] port 3306 character_set_serverutf8 basedir D:\Program Files\mysql-5.7.11-winx64 datadir D:\Program Files\mysql-5.7.…

leetcode-23 合并K个排序链表

合并 k 个排序链表&#xff0c;返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6 方法一&#xff1a; 使用vector数组存多个链表的所有节点&#xff0c;进行从小…

Access应用日志一

今天在确认实习生不能帮忙搭建数据库后&#xff0c;自己根据业务需求尝试搭了一个小型access数据库。 主要目的&#xff1a;储存历史月度数据&#xff0c;避免每次从公司数据库下载数据的麻烦&#xff0c;节省数据拉取时间。 搭建了以acct id为主键的两种数据。 1&#xff09;客…

mongodb检查点_mongodb 监控命令mongostat

mongodb 监控命令mongostat2016/03/07 15:11 于 数据分析mongostat实用工具提供了mongoDB一个实例快速概述和当前运行的状态。mongostat功能类似于UNIX / Linux文件系统实用vmstat,mongostat只不过是提供 mongodb 的数据。监控包含的数据&#xff1a;服务器状态数据副本状态数据…

RunnableException与CheckedException

Checked Exception 编译时异常 编译的时候检查你的代码可能在运行的时候抛出异常&#xff0c;这通常在编译的时候要去处理的。 RunnableException 运行时异常&#xff0c;可以编译通过&#xff0c;但如果不处理运行时会导致崩溃&#xff0c;需要对其进行try....catch...处理。 …

Educational Codeforces Round 59 (Rated for Div. 2)

A.Digits Sequence Dividing 题意&#xff1a;给你一个1-9的数字字符串&#xff0c;把它划分成若干段&#xff08;>2&#xff09;段&#xff0c;使其大小递增。 错误&#xff1a;当长度为2的时候没考虑 #include<cstdio> #include<cmath> #include<cstring&g…

leetcode-225 队列实现栈

使用队列实现栈的下列操作&#xff1a; push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空 队列的特点&#xff1a;先入先出 栈的特点&#xff1a;后入先出 即我们每次添加元素到队列时&#xff0c;想要达到栈的效果&#xff0c;…

详解Java Math类的toDegrees()方法:将参数从弧度转换为角度

Java Math 类的 toDegrees() 方法是将一个角度的弧度表示转换为其度表示,返回值为double类型,表示从弧度数转换而来的角度数。这就是Java Math 类的 toDegrees() 方法的攻略。我们已经了解了该方法的基本概念、语法、注意事项以及两个示例。希望这篇攻略对你有所帮助。

python语音合成 标贝_tacotronV2 + wavernn 实现中文语音合成(Tensorflow + pytorch)

TacotronV2 WaveRNN开源中文语音数据集标贝(女声)训练中文TacotronV2&#xff0c;实现中文到声学特征(Mel)转换的声学模型。在GTA模式下&#xff0c;利用训练好的TacotronV2合成标贝语音数据集中中文对应的Mel特征&#xff0c;作为声码器WaveRNN的训练数据。在合成阶段&#x…

SpringBoot接口防抖(防重复提交)的一些实现方案

作为一名老码农,在开发后端Java业务系统,包括各种管理后台和小程序等。在这些项目中,我设计过单/多租户体系系统,对接过许多开放平台,也搞过消息中心这类较为复杂的应用,但幸运的是,我至今还没有遇到过线上系统由于代码崩溃导致资损的情况。这其中的原因有三点:一是业务系统本身并不复杂;二是我一直遵循某大厂代码规约,在开发过程中尽可能按规约编写代码;三是经过多年的开发经验积累,我成为了一名熟练工,掌握了一些实用的技巧。啥是防抖所谓防抖,一是防用户手抖,二是防网络抖动。

OC语言基础笔记

OC方面的基础笔记:1.类的基本用法#import <Foundation/Foundation.h>// 大体上就是include, 用于包含头文件, 但是即使头文件中, 没有ifndef defined endif, 仍然能够踢除重复包含的头文件// ----interface section----// OC中声明和实现是分离的, 两个都必须有.interfac…

Docker 数据卷之进阶篇

Docker 数据卷之进阶篇 原文:Docker 数据卷之进阶篇笔者在《Docker 基础 : 数据管理》一文中介绍了 docker 数据卷(volume) 的基本用法。随着使用的深入&#xff0c;笔者对 docker 数据卷的理解与认识也在不断的增强。本文将在前文的基础上介绍 docker 数据卷的原理及一些高级用…

leetcode-232 用栈实现队列

使用栈实现队列的下列操作&#xff1a; push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空 栈的特点&#xff1a;后入先出 队列的特点&#xff1a;先入先出 使用一个数据栈&#xff0c;一个辅…

sparkcore分区_Spark学习:Spark源码和调优简介 Spark Core (二)

本文基于 Spark 2.4.4 版本的源码&#xff0c;试图分析其 Core 模块的部分实现原理&#xff0c;其中如有错误&#xff0c;请指正。为了简化论述&#xff0c;将部分细节放到了源码中作为注释&#xff0c;因此正文中是主要内容。第一部分内容见&#xff1a;Spark学习&#xff1a;…