美文网首页
绿色计算模拟赛-第二阶段

绿色计算模拟赛-第二阶段

作者: 风清云淡Python | 来源:发表于2018-11-06 16:59 被阅读0次

第二阶段

第一关-气温预测

每日根据气温数组,请重新生成一个数组,新数组对应位置的是你需要再等待多久温度才会升高的天数。如果之后都不会升高,请用0来代替。

例如:定给一个数组temps = {34,35,33,25,44,19,18,17}新生成的数组应该为[1, 3, 2, 1, 0, 0, 0, 0]

temps数组第一天温度是34℃,第二天是35℃,所以对应新生成数组位置的数据应该是1,代表还需等待1天就会升温,第二天温度是35℃,还需等待3天才会出现比35℃还高的温度(44℃),第五天温度是44℃,都之后不会升温了,用则0来代替。

编程要求

完善补充代码右侧区中的dailyTemps(temp_list)函数,实现,最后返回计算的结果即可。

注意:气温列表长度的范围是[1, 10000]。每个气温的值的都是[0, 100]范围内的整数。

测试说明

样例1

输入:

34 35 33 25 44 45 46 17

输出:

[1, 3, 2, 1, 1, 1, 0, 0]

我的解答:

def dailyTemps(temp_list):

    '''********** BEGIN **********'''
   
    result = []# 声明result是一个列表
    i =0
    while i < len(temp_list)-1 :#循环遍历从第0个数到倒数第2个数
        j = i 
        while temp_list[i] >= temp_list[j]:
            j = j+1
            if j == len(temp_list) :
                break
        if j == len(temp_list) :
            result.append(0)
        else :
            result.append(j-i)                
        i = i+1
    result.append(0)
    
    '''********** END ************'''
    return result

好的解答:有时候做循环操作的时候,用for range 比用while好

def dailyTemps(temp_list):

    '''********** BEGIN **********'''
    result = list()#声明一个列表
    for i in range(len(temp_list)):#循环列表的下标
        for k in range(1, len(temp_list)-i):
            count = 0
 # 在这里设置一个count是有必要的,当后面没有大的值时,就直接填0,有的话,返回k,就行,因为k不仅代表循环的下标,还表示个数。双重意义
            if (temp_list[i] < temp_list[i+k]):
                count = k
                break
        result.append(count)
        

    '''********** END ************'''
    return result

第二关-折纸小游戏

树袋熊是“绿盟”社区的一名绿色资源爱好者。他买了一个长方形彩纸,想要裁剪成尽可能大的相同大小的正方形彩纸送给女朋友,而且贯彻绿色精神,不能有剩余。请你编程序来帮他追到女朋友吧!

题目描述:

长方形彩纸长m,宽n,求出裁剪的相同大小的正方形的边长j的最大值以及小正方形的个数k。其中m,n,j,k均为正整数。

输入:

第一行为长方形的长m
第二行为长方形的宽n

输出:
返回result列表为 [j,k],其中j为正方形边长最大值,k为正方形个数。

编程要求

补充完善右侧代码区中的paperFolding(paper_info)函数,实现判断正方形边长最大值和正方形个数的功能,length为长方形的长,width为长方形的宽。具体要求如下:

  • 不能有纸剩余;
  • 所有的正方形大小必须相同;
  • 确保前两个条件满足的情况下,使正方形的边长尽可能的大;
  • 将结果作为数组返回。

测试说明

样例1

输入:

4
2

输出:

[2,2]

样例2

输入:

7
3

输出:

[1,21]

我的解答;问题的关键在于找到两个数的最大的公约数
i//j:表示整数除法。例如8//2的值为int类型4,9//4的值为int类型2。即整数除法只取整数商,去掉小数部分。
i/j:表示对象i除以对象j,无论i和j的类型是int还是float,结果都为float,如10/4结果为2.5。

def paperFolding(paper_info):
    length = paper_info[0]
    width = paper_info[1]

    result = []

    edge = hcf(length, width)
    result.append(edge)
    result.append(int(length*width/(edge*edge)))

    return result


def hcf(x, y):
    if x > y:
        smaller = y
    else:
        smaller = x
    for i in range(1, smaller + 1):
        #找到最公约数
        if ((x % i == 0) and (y % i == 0)):
            hcf = i
    return hcf

第三关-渡口与船

给定一个渡口(二维的),请计算渡口中停了多少艘船。 船用 + 表示,空位用字母o表示。 你需要遵守以下规则:

  • 给你一个有效的渡口(二维数组),仅由船和空位组成。
  • 船只能水平或者垂直放置。换句话说,船只能由 1 行, N 列组成,或者 N 行, 1 列组成,其中N可以是任意大小。
  • 两艘船之间至少有一个水平或垂直的空位分隔,即没有相邻的船。

编程要求

补充完善右侧代码区中的countOfShips(ferry)函数,实现根据输入的数组来判断船的数量,并将船的数量作为返回值返回。

测试说明

样例1

输入:

3 4
+ + + +
o o o o
o o o o

输出:

1

样例2

输入:

3 4
+ o o +
o o o +
o o o +

输出:

2

注意:右侧测试集中有输入参数传入,如:3 4 ,这两个数字是后台构建渡口时传入的大小,不会作为函数countOfShips的参数传入,可以忽略这两个数字的作用。

无效样例:

o o o +
+ + + +
o o o +

你不会收到这样的无效样例,因为船之间至少会有一个空位将它们分开。

好的解答:

相关文章

  • 绿色计算模拟赛-第二阶段

    第二阶段 第一关-气温预测 每日根据气温数组,请重新生成一个数组,新数组对应位置的是你需要再等待多久温度才会升高的...

  • 绿色计算模拟赛-第一阶段

    第一阶段 第一关-求和 这次“绿盟杯”大赛,小明作为参赛选手在练习的时候遇到一个问题,他要对一个范围的两个数进行数...

  • 绿色计算预赛-第二阶段

    第二阶段 第一关-统计分数的麻烦 “绿盟杯”比赛过后,赛事承办方的各位工作人员们就开始分头统计各个参赛队伍和同学的...

  • 2019-08-10 计算客模拟赛

    190分,第一题0分了,没查出来问题第一题 [第二题]https://nanti.jisuanke.com/t/4...

  • 你是谁(WhoAreYou)100计算机模拟

    下面我们谈一谈,计算机模拟的问题。 计算机模拟是很大的一块。计算机模拟,这是一个基本的描述:根据理论编写程序模拟出...

  • 模拟赛 170118

    题目|文件名称 |总时间限制|内存限制|试题总分|测试点|题目类型--------------|-------|-...

  • 计算模拟历史

    以前闲着无聊的时候曾经做过一个《资治通鉴》的字频统计,单以频率计,中国历史不过是“王”与“人”,“义”与“忠”,“...

  • 时间对称性和物理定律

    两个相互影响的黑洞的两个计算机模拟。红线是计算机回溯到的模拟。白线是计算机在时间上向前移动的模拟。经过3500万年...

  • Flink基本原理

    1.支持流处理的引擎:Spark和Flink Spark:基于批处理来模拟流的计算;Flink:基于流计算来模拟批...

  • 湍流的数值模拟方法

    现有的湍流数值模拟方法有三种:直接数值模拟、雷洛平均模拟和大涡模拟。 计算复杂程度:雷洛平均模拟-大涡模拟-直接数...

网友评论

      本文标题:绿色计算模拟赛-第二阶段

      本文链接:https://www.haomeiwen.com/subject/fublxqtx.html