蓝桥杯例题六

server/2025/2/7 5:09:50/

奋斗是一种态度,也是一种生活方式。无论我们面对什么样的困难和挑战,只要心怀梦想,坚持不懈地努力,就一定能够迈向成功的道路。每一次失败都是一次宝贵的经验,每一次挫折都是一次锻炼的机会。在困难面前,我们不能轻易放弃,而应该勇敢地面对,坚持不懈地追求自己的目标。只要我们有梦想,就有追求的动力;只要我们有坚持,就有成功的可能。让我们激发内在的力量,勇敢地面对挑战,努力奋斗,成就自己的人生。不管前方的路有多坎坷,我们都要坚持向前,不断超越自己,用汗水和努力书写属于自己的辉煌篇章。相信自己,励志奋斗,成功势在必得!

蓝桥杯官网蓝桥杯大赛 — 全国大学生TMT行业赛事

刷题力扣 (LeetCode) 全球极客挚爱的技术成长平台

目录

题目11:整数拆分

背景描述:

输入格式:

输出格式:

样例输入:

样例输出:

解答过程:

Python代码实现及详细注释:

题目12:买卖股票的最佳时机 II

背景描述:

输入格式:

输出格式:

样例输入:

样例输出:

解答过程:

Python代码实现及详细注释:

总结


题目11:整数拆分

背景描述:

给定一个正整数 n,将其拆分为至少两个正整数之和,并使这些整数的乘积最大化。返回你可以获得的最大乘积。

输入格式:

输入一个整数 n (2 <= n <= 58)。

输出格式:

输出一个整数,表示可以获得的最大乘积。

样例输入:
10
样例输出:
36
解答过程:

动态规划 是解决此类问题的有效方法。我们使用一个数组 dp 来存储每个整数 i 的最大乘积值,并通过状态转移方程更新 dp[i]

步骤:

  1. 初始化:
    • 创建一个大小为 n+1 的数组 dp,其中 dp[i] 表示整数 i 拆分后的最大乘积。
    • 初始化 dp[2] = 1,因为 2 只能拆分成 1 + 1,乘积为 1
  2. 状态转移:
    • 对于每一个整数 i,尝试将其拆分成 j 和 i-j,并更新 dp[i] 为 max(dp[i], max(j, dp[j]) * max(i-j, dp[i-j]))
  3. 结果:
    • 最终 dp[n] 即为所求的最大乘积。
Python代码实现及详细注释:
def integer_break(n):if n == 2:return 1# 初始化dp数组dp = [0] * (n + 1)dp[2] = 1for i in range(3, n + 1):for j in range(1, i // 2 + 1):# 更新dp[i]为当前最大乘积dp[i] = max(dp[i], max(j, dp[j]) * max(i - j, dp[i - j]))return dp[n]# 示例输入
n = 10# 调用函数并打印结果
print(integer_break(n))  # 输出: 36

题目12:买卖股票的最佳时机 II

背景描述:

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(即多次买入和卖出一支股票)。但是,你不能同时参与多个交易(必须在再次购买前出售掉之前的股票)。

输入格式:

第一行包含一个整数 n (1 <= n <= 10^5),表示价格数组的长度。 第二行包含 n 个整数,表示每一天的价格。

输出格式:

输出一个整数,表示可以获得的最大利润。

样例输入:
6
7 1 5 3 6 4
样例输出:
7
解答过程:

贪心算法 是解决此类问题的有效方法。我们只需要在价格上涨时进行买卖操作,即可获得最大利润。

步骤:

  1. 初始化:
    • 设置变量 max_profit 为0,用于记录总利润。
  2. 遍历价格数组:
    • 对于每一天的价格,如果当天的价格高于前一天的价格,则将差值累加到 max_profit 中。
  3. 结果:
    • 最终 max_profit 即为所求的最大利润。
Python代码实现及详细注释:
def max_profit(prices):max_profit = 0for i in range(1, len(prices)):# 如果当天的价格高于前一天的价格,则进行买卖操作if prices[i] > prices[i - 1]:max_profit += prices[i] - prices[i - 1]return max_profit# 示例输入
prices = [7, 1, 5, 3, 6, 4]# 调用函数并打印结果
print(max_profit(prices))  # 输出: 7

总结

这两个题目分别涉及了不同的算法思想和技巧:

  • 整数拆分 使用了动态规划的方法,适用于处理需要寻找最优子结构的问题。
  • 买卖股票的最佳时机 II 使用了贪心算法,这是一种常见的用于优化问题的方法,特别适合用于寻找局部最优解以达到全局最优解的情况。

http://www.ppmy.cn/server/165600.html

相关文章

每日Attention学习20——Group Shuffle Attention

模块出处 [MICCAI 24] [link] LB-UNet: A Lightweight Boundary-Assisted UNet for Skin Lesion Segmentation 模块名称 Group Shuffle Attention (GSA) 模块作用 轻量特征学习 模块结构 模块特点 使用分组(Group)卷积降低计算量引入External Attention机制更好的学习特征S…

51单片机07 串口通信

串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信。单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信。51单片机内部自带UART&#xff08;Universal Asynchronous Recei…

React常见状态管理工具详解

了 解React常见的状态管理工具&#xff0c;需要详细解释。首先&#xff0c;我得回想一下React生态中常用的状态管理方案有哪些。React本身有useState和useContext&#xff0c;然后是第三方库比如Redux、MobX、Recoil、Zustand、Jotai、XState&#xff0c;可能还有Valtio。这些工…

宾馆民宿酒店住宿管理系统+小程序项目需求分析文档

该系统是一款专为现代酒店设计的高效、智能、易用的管理工具,旨在帮助酒店提升运营效率、优化客户体验,提升客户满意度与忠诚度,并促进业务增长。系统采用先进的云计算技术,支持小程序等多平台访问,第三方接口,确保数据安全与稳定。本系统主要针对中小型精品酒店、连锁酒…

Google Chrome-便携增强版[解压即用]

Google Chrome-便携增强版 链接&#xff1a;https://pan.xunlei.com/s/VOI0OyrhUx3biEbFgJyLl-Z8A1?pwdf5qa# a 特点描述 √ 无升级、便携式、绿色免安装&#xff0c;即可以覆盖更新又能解压使用&#xff01; √ 此增强版&#xff0c;支持右键解压使用 √ 加入Chrome增强…

Windows Docker笔记-安装docker

安装环境 操作系统&#xff1a;Windows 11 家庭中文版 docker版本&#xff1a;Docker Desktop version: 4.36.0 (175267) 注意&#xff1a; Docker Desktop 支持以下Windows操作系统&#xff1a; 支持的版本&#xff1a;Windows 10&#xff08;家庭版、专业版、企业版、教育…

redis教程

Redis 教程 Redis 是一个开源的内存数据结构存储系统&#xff0c;用作数据库、缓存和消息代理。以下是一些基础知识和常用操作。 一、简介 Redis 支持多种数据结构&#xff0c;如字符串、哈希、列表、集合、有序集合等。它具有高性能、高可用性和数据持久化的特性。 二、安…

Kotlin/Js Kotlin 编译为 JS (尝试)

Kotlin/JS 是 Kotlin 编程语言的一个目标平台&#xff0c;它允许你使用 Kotlin 编写在 JavaScript 环境中运行的代码。通过 Kotlin/JS&#xff0c;你可以将你的 Kotlin 代码编译成 JavaScript 代码&#xff0c;通常是兼容 ECMAScript 5 或更高版本的形式。这使得 Kotlin 不仅可…