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
  • 相关阅读:
    efibootmgr命令
    GPT+UEFI双系统引导
    关于元类的一些使用心得
    队列的数组实现
    队列的链表实现
    栈的链表实现
    栈的数组实现
    单链表实现基数排序
    多项式ADT加法乘法——单链表实现
    LeetCode: 476 Number Complement(easy)
  • 原文地址:https://www.cnblogs.com/Lin-Yi/p/7351800.html
Copyright © 2011-2022 走看看