mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6mobile wallpaper 7
771 字
2 分钟
【第五周作业-2】算法应用(穷举、递归、贪心)
2025-12-01

1.【穷举法】鸡兔同笼#

任务描述#

解决一个经典的“鸡兔同笼”数学问题:已知笼子里共有35个头和94条腿,要求通过“穷举法”推算出鸡和兔子各有多少只。

def fun(a,b):
for i in range(1,a+1):
if i*2+(a-i)*4==b:
return i,a-i
x,y=fun(35,94)
print('鸡有{}只,兔子有{}只'.format(x,y))

2.【递归法】字符串反转#

任务描述#

实现一个基于递归算法的字符串反转程序,用于对军事通信中的指令字符串进行加密处理。给定一条明文指令(如“ATTACK_ENEMY_BASE”),通过递归方式将其字符顺序完全反转,生成密文(如“ESAB_YMENE_KCATTA”),以达到简单加密的目的。

相关知识#

字符串反转是指将字符串中的字符从后往前重新排列的过程。递归是一种函数调用自身的方法,适合处理具有自相似结构的问题。在字符串反转中,可以通过“取出第一个字符,然后递归处理剩余部分,最后将第一个字符放到结果末尾”的策略来实现整体反转。递归的终止条件是待处理字符串为空或只剩一个字符时直接返回。

编程要求#

编写一个名为reverse_string的递归函数,该函数接收一个字符串参数,表示待加密的军事指令。函数不使用循环结构,仅通过递归方式实现字符串的完全反转,并返回反转后的字符串。例如,输入 "ATTACK_ENEMY_BASE",输出应为 "ESAB_YMENE_KCATTA"(注:示例中可能存在笔误,正确反转应为原字符串倒序)。确保函数能正确处理包含下划线的大写字母字符串。

def myReverse(s):
#请开始编程
if len(s) <= 1:
return s
return myReverse(s[1:]) + s[0]
##########
str=input('')
print(myReverse(str))

3.【贪心法】求最大值#

任务描述#

从用户输入的一串数字中,使用贪心策略找出其中的最大值并输出。

相关知识#

贪心法是一种在每一步选择中都采取当前最优解的算法思想。在求最大值的问题中,贪心策略体现为:从第一个数开始,假设它是当前最大值,然后依次将后续每个数与当前最大值比较,如果发现更大的数,就更新最大值。 由于每次比较都保留较大的数,最终留下的就是全局最大值。这种方法不需要保存所有数据,适合处理一串连续输入的数字。

编程要求#

编写一个程序,能够接收用户输入的一串数字(可以以空格分隔或逐个输入),使用贪心算法的思想,在遍历这串数字的过程中动态维护当前遇到的最大值。遍历结束后,输出该最大值。要求程序能正确处理正数、负数和零,并确保输入至少包含一个数字。

# -*- coding: utf-8 -*-
"""
输入一个整数序列,求最大值。
"""
def find_max(a):
#请开始编程
Max=a[0]
for i in range(1,len(a)):
if a[i]>Max:
Max=a[i]
return Max
###############
a=eval(input(''))
m=find_max(a)
print(m)
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

【第五周作业-2】算法应用(穷举、递归、贪心)
https://blog.sherry.qzz.io/posts/python/1201algorithm/
作者
Sherry
发布于
2025-12-01
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录