zoukankan      html  css  js  c++  java
  • 赛码网算法: 格子游戏

    格子游戏

    题目描述

    有n个格子,从左到右放成一排,编号为1-n。
    共有m次操作,有3种操作类型:
    1.修改一个格子的权值,
    2.求连续一段格子权值和,
    3.求连续一段格子的最大值。
    对于每个2、3操作输出你所求出的结果。


    输入
    输入第一行两个整数,n表示格子个数,m表示操作次数,n和m中间用空格隔开;
    接下来输入n行,每行一个整数表示一个格子的权值
    接下来输入m行,每行有三个整数,中间用空格隔开;第一个是选择的操作类型1-3,第二和第三个整数是操作格子的编号。
    样例输入
    3 3
    7
    8
    9
    2 1 3
    3 1 3
    2 1 2
    输出
    若执行1操作则无输出
    若执行2和3操作则输出一个整数
    样例输出
    24
    9
    15




    这道题难度不大,我用python3来实现,提供给大家参考:
     1 #coding:utf8
     2 nm = input(  ).split(" ")
     3 #n个格子    m个操作次数
     4 n = int( nm[0] )
     5 m = int( nm[1] )
     6 
     7 #输入n个格子的权值
     8 boxes = []
     9 for i in range(n):
    10     boxes.append( int(input() ) )
    11 #接下来进行m次操作
    12 for i in range(m):
    13     #记录操作编号
    14     operation = [ int(i) for i in input().strip(" ").split(" ") ]
    15     # 修改权值  输入1
    16     if operation[0] == 1:
    17         boxes[operation[1] -1 ] = operation[2]
    18     else :
    19         start = operation[1] -1
    20         end = operation[2]
    21         # 求一段之间权值的和 输入2
    22         if operation[0] == 2:
    23             print( sum( boxes[ start : end ] ) )
    24         # 求一段之间最大权值 输入3
    25         elif operation[0] == 3:
    26             print( max( boxes[ start : end ] ) )
    27         else:
    28             pass
  • 相关阅读:
    vsftpd安装问题汇总(持续更新。。)
    Office2010安装问题总结
    AM335X 开发板安装vsftpd操作流程
    Source Insight常用快捷键及注释快捷键设置
    小四轴之第二次飞行篇
    linux命令df中df -h和df -i
    Linux tail 命令
    Linux chmod命令用法
    ps -ef |grep java
    jupyter notebook安装、登录
  • 原文地址:https://www.cnblogs.com/Lin-Yi/p/7351800.html
Copyright © 2011-2022 走看看