【新员工座位安排系统】

2023-11-10

【新员工座位】

工位由序列F1,F2…Fn组成,Fi值为0、1或2。其中0代表空置,1代表有人,2代表障碍物。

1、某一空位的友好度为左右连续老员工数之和,
2、为方便新员工学习求助,优先安排友好度高的空位,

给出工位序列,求所有空位中友好度的最大值

输入描述:

第一行为工位序列:F1,F2…Fn组成,
1<=n<=10000,Fi值为0、1或2。其中0代表空置,1代表有人,2代表障碍物。

输出描述:

所有空位中友好度的最大值。如果没有空位,返回0。

示例1 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

0 1 0

输出

1

说明

第1个位置和第3个位置,友好度均为1。

示例2 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

1 1 0 1 2 1 0

输出

3

方法一:找到每个0出现的位置,然后分别向前后找连续出现的1,出现计数变量就加一,不是1就跳出

s = input().split()#
l = []
for i in range(len(s)):
    if s[i] == '0':
        count = 0
        for j in range(i-1,-1,-1):
            if s[j] == '1':
                count += 1
            else:
                break
        for k in range(i+1,len(s)):
            if s[k] == '1':
                count += 1
            else:
                break
        l.append(count)
if l:
    print(max(l))
else:
    print(0)

方法二:

记录空位左边的友好度:正向遍历,遇到1则计数变量加1,遇到0则记录变量值,并且重置为0,遇到2则直接重置为0

记录空位右边的友好度:逆向遍历,遇到1则计数变量加1,遇到0则记录变量值,并且重置为0,遇到2则直接重置为0

然后累加取最大值

# 输入获取
arr = input().split()
 
 
# 算法入口
def getResult(arr):
    # 记录空位的友好度
    ep = {}
 
    friendShip = 0
    # 从左向右遍历,记录每个空位左边的友好度
    for i in range(len(arr)):
        if arr[i] == "0":
            ep[i] = friendShip
            friendShip = 0
        elif arr[i] == "1":
            friendShip += 1
        else:
            friendShip = 0
 
    friendShip = 0
    ans = 0
    # 从右向左遍历,累加每个空位右边的友好度,这样就得到了每个空位的友好度,取最大值即可
    for i in range(len(arr) - 1, 0, -1):
        if arr[i] == "0":
            ans = max(ans, ep[i] + friendShip)
            friendShip = 0
        elif arr[i] == "1":
            friendShip += 1
        else:
            friendShip = 0
 
    return ans
 
 
# 算法调用
print(getResult(arr))

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【新员工座位安排系统】 的相关文章

  • linux下部署thinkphp5项目

    准备工作 购买一个linux服务器地址 安装好linux常用的ssh工具 我这边喜欢用xshell敲命令 用filezilla传输文件 这些工具只要到官网下载就好 速度很快的 1 安装phpstudy for linux 安装下载phpst

随机推荐

  • java:JSONArray转byte[]字节数组

    package com xxx huali hualitest json import com alibaba fastjson JSONArray import com alibaba fastjson util Base64 publi
  • C语言运行流程

    在上一篇文章visual studio如何运行并调试C语言代码中写了如何运行并调试代码 我们就明确一个事实 即不论是嵌入式系统 亦或是普通PC电脑 对于程序的运行硬件处理器只能识别0 1的二进制码 从类人语言的C代码 需要经过一系列的转换过
  • 各种算法使用场景

    深度优先搜索BFS VS 广度优先搜索 DFS 算法就是回溯算法 BFS 相对 DFS 的最主要的区别是 BFS 找到的路径一定是最短的 但代价就是空间复杂度可能比 DFS 大很多 递归灵魂三问 labuladong 告诉你 遇到任何递归型
  • SQL Server基础Sql语句复习

    基础至极 1 创建表 create table Course Cno char 4 primary key not null 创建主键 非空 Cname char 40 not null Cpno char 4 Ccredit smalli
  • 软件测试报告bug统计,软件测试中如何有效地写Bug报告

    引言 为公众写过软件的人 大概都收到过很拙劣的bug 计算机程序代码中的错误或程序运行时的瑕疵 译者注 报告 例如 在报告中说 不好用 所报告内容毫无意义 在报告中用户没有提供足够的信息 在报告中提供了错误信息 所报告的问题是由于用户的过失
  • 【算法学习笔记】17:DFS与BFS

    1 DFS 深度优先搜索常用于解决需要给出所有方案的问题 因为它的搜索顺序就是能够得到一个完整的搜索路径 方案 后回退再去搜索其它的方案 1 1 例题 排列数字 由于要求所有排列的方案 可以每次从 1 n 1 n 1 n里拿一个数字 然后记
  • 为什么P值不再是0.05(孟德尔随机化)

    为什么P值不再是0 05 孟德尔随机化 为什么P值不再是0 05 孟德尔随机化
  • 长连接和短链接的区别

    长连接意味着进行一次数据传输后 不关闭连接 长期保持连通状态 如果两个应用程序之间有新的数据需要传输 则直接复用这个连接 无需再建立一个新的连接 就像下图这样 它的优势是在多次通信中可以省去连接建立和关闭连接的开销 并且从总体上来看 进行多
  • < 数据结构 > 堆的应用 --- 堆排序和Topk问题

    目录 1 堆排序 法一 自己写堆进行排序 时间复杂度分析 法二 直接对数组建堆 向上调整建堆 向下调整建堆 向上建堆和向下建堆熟优 升序能否建小堆 排序 建大堆 2 TopK问题 何为Topk 实现过程 1 堆排序 假如我们有一串乱序数组
  • 深度学习论文:Deep Residual Learning for Image Recognition

    论文 He Kaiming et al Deep residual learning for image recognition Proceedings of the IEEE conference on computer vision a
  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • 【更好的中文语音识别SpeechBrain Win10/11本地部署,基于Aishell】

    环境 Win11x64 Vscode Python3 7 2x64 Pytorch1 9 CPU or GPU 本文默认Win11 Win10 100 素可以得 默认向下兼容 首先 你得把Vscode弄好 python 插件安装 py环境搭
  • Qt多线程的几种实现方式

    Qt多线程的几种实现方式 在Qt中经常会遇到耗时操作 需要并发执行 这个时候就要用到多线程 Qt的多线程有多种实现形式 这里介绍3种方式 类实现形式 用类实现多线程是最传统的实现形式 思想是写一个继承QThread的类 然后通过run 来开
  • 【drug】获取化合物的3D结构

    如何从化合物的SMILES字符串获取化合物的3D结构 以下几种方法供参考 1 借助pubchem的py查询接口进行查询 首先需要安装pubchempy conda install pubchempy sdf pubchempy get sd
  • 震惊小伙伴的单行代码(Python篇)

    几年前 函数式编程的复兴正值巅峰 一篇介绍 Scala 中 10 个单行函数式代码的博文在网上走红 很快地 一系列使用其他语言实现这些单行代码的文章也随之出现 比如 Haskell Ruby Groovy Clojure Python C
  • 【数据库实验】多表查询

    例3 48 查询平均成绩大于等于90分的学生学号和平均成绩 注意 聚合不应出现在 WHERE 子句中 除非该聚合位于 HAVING 子句或选择列表所包含的子查询中 并且要对其进行聚合的列是外部引用 正确写法 select Sno AVG G
  • 一分钟快速把一篇论文后面的参考文献全部下载下来

    之前写了一篇博客 将一篇论文的全部参考文献一键导入到mendely 但是我发现 导入进去之后尽管文献的所有信息以及摘要在mendely里都有了 可是并不能查看文献内容 即没有PDF文档 因此我又找了其他办法 第一步 你需要下载一个EndNo
  • JavaScript简单算法-----二分查找

    二分查找又称折半查找 只适用于有序数组 二分查找就是将需要查找的元素不断地与数组中间的元素进行比较 数组不断地拆分为两段 查找元素小于中间值在前半段查找 大于中间值在后半段进行查找 代码展示 javaScript 的二分查找算法 var A
  • 搭建第一个Docker

    Docker 是一个开源的容器引擎 用于创建 管理和编排容器 可以轻松为任何应用创建一个轻量级 可移植 自给自足的容器 本步骤将在linux上部署一个Docker服务 并配置DockerHub的镜像加速器 安装软件包 在linux命令行输入
  • 【新员工座位安排系统】

    新员工座位 工位由序列F1 F2 Fn组成 Fi值为0 1或2 其中0代表空置 1代表有人 2代表障碍物 1 某一空位的友好度为左右连续老员工数之和 2 为方便新员工学习求助 优先安排友好度高的空位 给出工位序列 求所有空位中友好度的最大值