educoder:实验13 算法-穷举法和二分法

news/2024/11/28 23:39:20/

第1关:百钱百鸡

任务描述

我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

相关知识

为了完成本关任务,你需要掌握:1.穷举法历数组。

穷举法

也称之为枚举算法、暴力破解法,就是按照问题本身的性质,一 一列举出该问题所有可能的解,并在列举的过程中,逐一检验每个可能解是否是问题的真正解。若是则采纳这个解;否则抛弃它。

编程要求

根据提示,在右侧编辑器编写代码,输出每种买法,及共几种买法。

测试说明

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

预期输出:

代码:

### 百钱百鸡 ###
q=0
for i in range(30):for x in range(50):a=(100-5*i-3*x)*3if 100-i-x==a:print('鸡翁的数量是{} 鸡母的数量是{} 鸡雏的数量是{}'.format(i,x,a))q=q+1
print('共有{}种买法'.format(q))

第2关:鸡兔同笼

任务描述

鸡兔同笼问题,是我国古代著名趣题之一。大约在1500年前,《孙子算经》中就记载了这个有趣的问题。书中是这样叙述的:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?” 这四句话的意思是:有若干只鸡兔同在一个笼子里,从上面数,有35个头;从下面数,有94只脚。求笼中各有几只鸡和兔?

本关任务:编写一个程序,能根据输入的鸡兔头数和脚数,计算鸡和兔子数。

编程要求

根据提示,在右侧编辑器补充代码,计算并输出鸡和兔子数。

测试说明

平台会对你编写的代码进行测试: 样例1 测试输入: 35 94 预期输出: 请输入总的头数 请输入总的脚数 鸡有23只 兔有12只

样例2: 测试输入: 51 31 预期输出: 请输入总的头数 请输入总的脚数 51只动物31条腿的情况无解


开始你的任务吧,祝你成功!

代码:

# -*- coding: utf-8 -*-
"""
Created on Thu Dec 10 08:19:29 2020
鸡兔同笼
@author: Admin
"""
print("请输入总的头数")
t = int(input())
print("请输入总的脚数")
j = int(input())
a=0
### Begin ###
if t<=0 or j<=0:print('{}只动物{}条腿的情况无解'.format(t,j))
else:for i in range(t+2):if j==2*i+4*(t-i):a=ibreakif i==t+1:print('{}只动物{}条腿的情况无解'.format(t,j))else:d=t-aprint('鸡有{}只 兔有{}只'.format(a,d))
### End ###

第3关:读心术

任务描述

猜数字游戏:请编码实现一款经典的猜数字游戏。玩家先随机在 1-1000之间给出一个数字,让AI猜,如果猜的数大了,提示“大了”,反之,则提示“小了”。直到AI猜中为止。

相关知识

二分法的核心:每次都将解的搜索空间大小缩小为原先的一半。 二分查找的基本思想(列表先已经有序)

  1. 在列表A的区间i, j中查找x,其中i, j为索引。
  2. 考察区间中间的元素的值,y=A[(i+j)//2],若x==y,算法结束;若x<y,则x必定位于原区间的左半边即[i,(i+j)//2-1];若x>y,则x必定位于原区间的右半边,即[(i+j)//2+1,j]
  3. 在新的区间(原区间一半大小)中继续查找。
  4. 重复2、3的步骤,区间不断缩小直到找到
  5. 若直到区间无效时(i>j),还没找到x,则x不在A中。

编程要求

根据提示,在右侧编辑器补充guess(x,low,high)函数代码。其中,x为要猜测的随机数,low为猜测范围的下界,high为上界。函数体中采用二分法猜测数据,如果二分法生成的数比要猜的数大,提示“大了”,并调整数据范围;如果小于要猜的数,提示“小了”,也调整数据范围。再重新猜数,直到猜中为止。函数需要返回猜测的次数。

测试说明

平台会调用评测函数对你编写的代码进行测试:

测试输入:590 预期输出: 小了 大了 大了 小了 大了 小了 小了 小了 大了 恭喜你猜中了,共猜了9次,猜中数是590


开始你的任务吧,祝你成功!

代码:

def guess(x,low,high):'''AI猜数函数,猜测x的值low:数据x所在范围的下界high:数据x所在范围的上界返回猜测的次数'''### Begin ###a=0while high-low>0:m=(low+high)//2if m>x:print('大了')high=m-1a=a+1elif m==x:breakelse:print('小了')low=m+1a=a+1return a### End ###


http://www.ppmy.cn/news/4029.html

相关文章

m基于BP神经网络的房屋价值变换趋势预测matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 住宅价格是住宅市场的核心&#xff0c;住宅市场的变化关系到广大消费者的切身利益&#xff0c;商品房价格是升是降&#xff0c;销售是冷是旺&#xff0c;是社会关注的热点问题。因此&#xff0c;…

RocketMQ基本概念及功能

文章目录背景架构模型NameServer 名字服务器Broker 代理服务器生产者主题队列消息消息标签消息位点消费者消费位点消费者分组订阅关系参考文章背景 RocketMQ是阿里巴巴在2012年开发的分布式消息中间件&#xff0c;专为万亿级超大规模的消息处理而设计&#xff0c;具有高吞吐量…

代码随想录训练营第52天|LeetCode 300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

参考 代码随想录 题目一&#xff1a;LeetCode 300.最长递增子序列 确定dp数组下标及其含义 dp[i]&#xff1a;在nums数组中&#xff0c;在下标0~i元素&#xff08;包含i&#xff09;的基础上&#xff0c;以nums[i]作为子序列的最后一个元素&#xff0c;组成的最长严格递增子序…

C/C++ 内存分布---变量所在哪个内存区域以及变量所占空间大小是多少?

C/C内存区域划分&#xff1a; 变量所在哪个内存区域以及变量所占空间大小是多少&#xff1f; int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";const …

MES系统——安东管理篇

警车&#xff1a;哇~儿&#xff01;哇~儿&#xff01;哇~儿&#xff01; 消防车&#xff1a;火~哦&#xff01;火~哦&#xff01;火~哦&#xff01; 救护车&#xff1a;喂~唔&#xff01;喂~唔&#xff01;喂~唔&#xff01; 喂喂&#xff0c;你还记得救护车、消防车、警车等…

OPSS-PEG-N3叠氮聚乙二醇巯基吡啶, N3-PEG-OPSS,点击化学PEG试剂

名称 叠氮聚乙二醇巯基吡啶 N3-PEG-OPSS 中文名称 叠氮PEG巯基吡啶 巯基吡啶PEG叠氮 巯基吡啶聚乙二醇叠氮 英文名称 N3-PEG-OPSS OPSS-PEG-N3 Azide-PEG-OPSS OPSS-PEG-Azide 溶剂 溶于二氯甲烷&#xff0c;氯仿&#xff0c;乙酸乙酯&#xff0c;四氢呋喃等有机溶剂 存储条…

1999-2020年各省农村综合数据

1999-2020年各省农村综合数据 1、时间&#xff1a;1999-2020年 2&#xff1a;来源&#xff1a;各省NJ、统计NJ、农村NJ 3、范围&#xff1a;包括31省 4、指标包括&#xff1a; 第一产业增加值占地区生产总值比重&#xff08;%&#xff09;、第一产业人员占就业人员比重&a…

创建第一个QT程序demo

双击Qt Creator 9.0.0 (Community)图标&#xff0c;打开软件。该图标所处位置为&#xff08;如果是默认安装到C盘下面的话&#xff09;&#xff1a;C:\Qt\Tools\QtCreator\bin\qtcreator.exe 或者从开始菜单栏启动&#xff08;开始菜单栏的启动图标本质上也是一个快捷方式&…