手机版 | 登陆 | 注册 | 留言 | 设首页 | 加收藏
当前位置: 网站首页 > python教程 > 文章 当前位置: python教程 > 文章

python题目集pta编程题及答案计算机二级python题目是真题吗

时间:2022-07-31    点击: 次    来源:网络    作者:佚名 - 小 + 大

python题目集pta编程题及答案计算机二级python题目是真题吗


下载地址

https://share.weiyun.com/OvviwGnZ


资料目录
Python练习集100题
100道Python面试题
Python100经典练习题
Python经典题目100道题
Python题库(已收录100道真题)
Python100例视频讲解课程
菜鸟教程Python教程100例
130道python练习题,涵盖基础内容的方方面面
Python考试题复习知识点试卷试题
PYTHON测试题和答案
python第一阶段考试题
Python经典面试题和答案解析
python期末考试复习试卷
python习题集大全(附答案解析)
老男孩Python全栈7期练习题(面试真题模拟)
尚观python第一阶段考试(面试真题模拟)
《Python程序设计基础与应用》习题答案
《Python快速编程入门》——课后题答案
Python编程基础张健 , 张良均课后习题及答案
Python程序设计基础及实践(慕课版)郭炜习题答案
Python程序设计基础习题答案与分析
python基础试题(含答案)

举例

森林中的兔子
题目要求
森林中,每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。我们将这些回答放在 answers 数组里。
返回森林中兔子的最少数量
示例:
示例:
输入: answers = [1, 1, 2]
输出: 5
输入: answers = [10, 10, 10]
输出: 11
解题思路
这类编程题,考察的不是编码能力,而是思考能力。首先要明确一点,这些兔子不会撒谎,否则,就没有答案了。
当思考问题时感到无从下手,就考虑边界或极值情况,我们假设森林中所有兔子都是相同的颜色,而且都会告诉你有多少其他的兔子和自己有相同的颜色,那么这会是怎样的局面呢?
假设森林中有3只兔子,那么答案一定是[2, 2, 2],如果森林中有5只兔子,那么答案一定是[4, 4, 4, 4, 4]。当你限制了那些变化的条件,问题就变得清晰明了了,有N只兔子,就有N个答案,且答案一定是N-1,兔子是不会说谎的。
现在,来分析题目给的例子,[1, 1, 2],有兔子回答2,就说明有3只兔子是一样的颜色,只有一只兔子回答了,其他两只没有回答,有两只兔子回答了1,他们两个可能是相同的颜色,也可能是不同的颜色,题目要求算最少的数量,那就认为他们是相同的颜色吧,这样就是5只兔子。
如果答案是 [1, 1, 2, 2, 2, 2]呢,森林中最少有8只兔子,2个回答1的兔子是相同颜色,3个回答2的兔子是相同颜色,还有一只兔子回答2,这就说明还有两个兔子和这只兔子颜色相同,但是他们没有回答。
分析到这里,不难得出一个简单的结论,如果一只兔子回答N,那么森林中必然有N+1只兔子颜色相同,剩余的N只兔子可能来回答了,也可能没有来回答,假设都来回答,那就有N+1个答案为N,可是如果出现了N+2个兔子回答N,就说明又多出来N+1只兔子,多出来的这组兔子只有一只来回答了。
你需要做的是统计每个答案的个数,比如 [1, 1, 2, 2, 2, 2],回答情况如下
{
    1: 2,   # 回答1 的有2只兔子
    2: 4    # 回答2 的有4只兔子
}
回答2,表明有3只兔子,但却有4只兔子回答2,用4除以3得1.33,这说明存在两组兔子,每组有3只颜色一样的兔子。
示例代码
# coding=utf-8
import math


def get_rabbit_count(answers):
    answer_dict = {}
    for item in answers:
        answer_dict.setdefault(item, 0)
        answer_dict[item] += 1

    count = 0
    for key, value in answer_dict.items():
        # math.ceil向上取整, math.ceil(float(value)/(key+1)) 得到的是至少有几组兔子
        # 有兔子回答key,那么就至少有key+1个兔子
        count += math.ceil(float(value)/(key+1))*(key+1)

    return int(count)


if __name__ == '__main__':
    print(get_rabbit_count([1, 1, 2]))
    print(get_rabbit_count([10, 10, 10]))
    print(get_rabbit_count([1, 1, 2, 2, 2, 2]))

上一篇:python题目答案及分析python题目练习蓝桥杯c和Python题目一样吗

下一篇:没有了

推荐阅读
声明 | 联系我们 | 关于我们
备案ICP编号  |   QQ:2151239526  |  地址:北京市东城区  |  电话:16605168200  |