Lab3-P4-综合算法应用

这篇具有很好参考价值的文章主要介绍了Lab3-P4-综合算法应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一关:找零钱问题

任务描述

假设有4种硬币,它们的面值分别为2角5分,1角、5分和1分,现在要找给某顾客x分钱,问怎样找零钱才能使给的顾客的硬币个数量少?

相关知识

算法原理

贪心法找零钱的基本思想是:每次都是选择面值不超过需要找给顾客的钱的最大面值的硬币。以上面找零钱的问来说:选出一个面值不超过6角3分的最大面值硬币2角5分找给顾客,然后还要找3角8分;选出一个面值不超过3角8分的最大面值硬币2角5分找给顾客,然后还要找1角3分;选出一个面值不超过1角3分的最大面值硬币1角找给顾客,然后还要找3 分;选出一个面值不超过3分的最大面值硬币1分找给顾客,然后还要找2分;选出一个面值不超过2分的最大面值1分找给顾客,然后还要找1分;最后选出一个面值不超过1分的最大面值硬币1 分找给顾客,这种找硬币的方法实际上就是贪心算法。

编程要求

根据提示,在右侧编辑器编写greedy函数,计算并输出找钱方案。

测试说明

平台会对你编写的代码进行测试:

测试输入: 要找给顾客的零钱,单位:分:63

(注意:63前面的信息实际上是输出)

预期输出:

要找给顾客25分的硬币:2

要找给顾客10分的硬币:1

要找给顾客5分的硬币:0

要找给顾客1分的硬币:3

找给顾客的硬币数最少为:6

# #贪心算法解决找零钱问题
v = [25, 10, 5, 1]
n = [0, 0, 0, 0]


def change():
    T = int(input('要找给顾客的零钱,单位:分:'))
    greedy(T)
    for i in range(len(v)):
        print('要找给顾客%d分的硬币:%d' % (v[i], n[i]))
    s = 0
    for i in n:
        s = s + i
    print('找给顾客的硬币数最少为:%d' % s)


def greedy(T):
    p = 0
    for p in range(len(v)):
        while T >= v[p]:
            T -= v[p]
            n[p] += 1


# # please finish this function


if __name__ == "__main__":
    change()

# ## 思考题:
# ## 如果v = [12,10,5,1]
# ## 贪心算法能得到正确的解吗?请证明。

# 不能,因为贪心算法下,每次都选择最大的那个硬币,而最大的那个硬币可能是12,
# 而设定输入为63时,易得12*4+10*1+5*1=63总计6枚硬币,贪心算法下的解为8要少。
# 只因12和10之间的差距过小

 第二关:哥德巴赫猜想

任务描述

本关任务:编写程序证明哥德巴赫猜想。

编程要求

根据提示,在右侧编辑器补充代码。

测试说明

平台会对你编写的代码进行测试:

测试输入: 90

预期输出: 7, 83

测试输入: 6

预期输出: -1, -1

# 设计一个算法,验证哥德巴赫猜想:
# 任何一个充分大的偶数(大于6)总可以表示成两个素数之和.
# 请编写python 程序实现该算法。

def prove(n):
    if n <= 6 or n % 2 != 0:
        return -1, -1
    for i in range(2, n):  # 写一个循环,用于找出答案的素数
        if sushu(i) and sushu(n - i):
            return i, n - i


def sushu(n):  # 懒了一下,这里直接写个素数判断的函数
    if n >= 2:
        for i in range(2, n):
            if n % i == 0:
                return False
    return True


if __name__ == '__main__':
    n = int(input())
    print("%d, %d" % prove(n))

# 当然你也可以写一个列表用于装所有素数(列表的大小取决于你n的输入值)
# 然后让i在上述列表里遍历,得到答案

第3关:冯诺依曼

任务描述

本关任务:编写一个实现自然数的集合表示形式。

冯•诺依曼不单是一位计算机科学家,也是很有名的数学家,他用集合来定义自然数系统,定义如下: 0 = {} = {} 1 = {0} = {{}} 2 = {0, 1} = {{}, {{}}} 3 = {0, 1, 2} = {{}, {{}}, {{}, {{}}}} …… 请根据上述定义,写出递归函数,由用户输入一个自然数N,输出该自然数对应的集合表示。例如,如输入为2,则输出为{{}, {{}}}。

测试说明

平台会对你编写的代码进行测试:

测试输入:

2

预期输出:

{{}, {{}}}

 文章来源地址https://www.toymoban.com/news/detail-763467.html

# ## 请编写代码

n = int(input())



def vonNeumann(n):
    sum = '{}' # 注意sum是字符串
    if n == 0:
        return sum
    if n == 1:
        return '{' + sum + '}'
    else:
        for i in range(1, n):
            sum = sum + ', ' + vonNeumann(i) # 这里是完成程序的关键,将每次的返回值都归到sum里
        return '{' + sum + '}'


print(vonNeumann(n))

到了这里,关于Lab3-P4-综合算法应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 「实验记录」MIT 6.824 KVRaft Lab3B With Log Compaction

    MIT-6.824 2020 课程官网 Lab3: KVRaft 实验主页 simviso 精品付费翻译 MIT 6.824 课程 Paper - Raft extended version source code 的 Gitee 地址 Lab3B: KVRaft with log compaction的 Gitee 地址 课程官网提供的 Lab 代码下载地址,我没有访问成功,于是我从 Github 其他用户那里 clone 到干净的源码,有需要可以访

    2024年02月15日
    浏览(48)
  • CSAPP lab1 Data Lab

    前言: 本系列文章用于记录开始学习csapp的过程,奈何感觉自己基础实在太渣渣,系统好好学习一下这本神书以及其对应的lab 这一张的lab是真的干,好几道题卡的我脑壳都卡秃噜了,好歹终于凭借着面向用例编程完成了这一张的lab 很多很多测试用例哦,再也不用担心绞尽脑

    2024年02月10日
    浏览(41)
  • CSAPP的Lab学习——Archlab(Architecture Lab)

    一个本硕双非的小菜鸡,备战24年秋招。刚刚看完CSAPP,真是一本神书啊!遂尝试将它的Lab实现,并记录期间心酸历程。 代码下载 官方网站:CSAPP官方网站 这道题下载完了记得不是完事了,还有一句话需要执行 如果执行make clean; make出现了报错,如: 可参考这位大佬的解决方

    2024年02月09日
    浏览(97)
  • Lab1 Packet Sniffing and Spoofing Lab

    @[TOC] Packet Sniffing and Spoofing Lab 实验网站连接link 1.先在虚拟机上导入 SEED VM并完成相应的配置。配置可以参考:link 2.使用准备好的docker-compose.yml去配置虚拟机环境 2.1先把docker-compose.yml放到虚拟机的某个文件夹下。 2.2 然后再文件所在的目录下输入命令运行 docker-compose up -d就能

    2024年02月07日
    浏览(53)
  • 网络攻防技术-Lab5-shellcode编写实验(SEED Labs – Shellcode Development Lab)

    网络攻防技术实验,实验环境、实验说明、实验代码见 Shellcode Development Lab 1) 编译mysh.s得到二进制文件 2) 执行 1)中的二进制文件 ,结果如下图, 我们 看到运行mysh之前的PID与运行mysh之后的PID是不同的,证明我们通过mysh启动了一个新的shell。 3) 获取机器码,以便进一步

    2023年04月13日
    浏览(43)
  • 【SEED LAB】Cross-Site Request Forgery (CSRF) Attack Lab -跨站请求伪造

    实际上,用户网页对于网址的请求分为两种。一种是用户浏览器发送给相同网站的数据,被称为 same-site request 。相反,用户浏览器发送给其他网站的数据被称为 cross-site request 也就是跨境请求。 在HTTP传输过程中,产生的响应形式一般分成两种。一种是 GET 型,另一种是 POST

    2024年02月09日
    浏览(43)
  • lab9 fs

    目标:11+256+256*256个block inode的格式在 fs.h 的 struct dinode 中被定义,你需要特别注意以下几点 NDIRECT NINDIRECT MAXFILE addrs[] 在磁盘上找一个文件数据是通过 fs.c 中的 bmap() 实现的 无论是读还是写文件,都调用了 bmap 在写文件时, bmap() 分配了新的block去容纳文件内容,在必要的时候

    2024年02月11日
    浏览(43)
  • 使用 Learner Lab - 学生

    AWS Academy Learner Lab 是提供一个帐号让学生可以自行使用 AWS 的服务,让学生可以在 100 USD的金额下,自行练习所要使用的 AWS 服务,AWS Academy 学习平台建立 Learner Lab - 教师 这篇文章介绍老师如何帮学生建立一个 Learner Lab 的课程。以下会有一系列的课程,示范如何使用 Learner

    2024年02月06日
    浏览(31)
  • 切换lab

    这个错误提示说明在切换到 syscall 分支之前,您对 Makefile 和 grade-lab-util 文件进行了本地修改,并且这些修改会被检出操作覆盖。在切换分支之前,您需要提交或贮藏这些修改。 根据您的操作,您可以按照以下步骤进行处理: 提交修改:如果您想保留这些修改并将其提交到当

    2024年02月07日
    浏览(31)
  • Ucore lab5

    了解第一个用户进程创建过程 了解系统调用框架的实现机制 了解ucore如何实现系统调用sys_fork/sys_exec/sys_exit/sys_wait来进行进程管理 练习0:已有实验代码改进 ​本实验中完成了用户进程的创建,能够对用户进程进行基本管理,并为用户进程提供了必要的系统调用。为了支持用户

    2024年02月02日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包