OD C卷 - 分披萨

分披萨

  • 有大小不同的奇数块披萨;
  • 从A开始轮流取披萨,第一块可以任意选取,其他都必须从缺口开始选;
  • B每次都选最大块的, A知道B的想法;
  • 求A能获得的披萨块总和的最大值;
    输入描述:
    第一行输入n(奇数,表示披萨块数), [3, 500)
    接下来的n行,每行输入一个披萨块的大小
    输出描述:
    A能获得的披萨块总和的最大值;

示例1
输入:
5
8
2
10
5
7
输出:
19
说明:
A拿10
B拿5
A拿7
B拿8
A拿2
此时A拿到最多19

示例2:
输入:
7
4
3
8
2
10
9
20
输出:
35

示例3
输入:
23
45
78
21
12
14
52
76
123
302
34
43
73
37
89
98
101
102
201
120
24
15
17
28
输出:
1032

思路:

  • 回溯法

  • A先随意取一块,有n种取法,0 1 2… n-1

  • A取的当前索引i

    • left = (i + 1 + n) % n;
    • right = (i -1 + n) % n;
    • backtrace(left, right),先B取一个较大的,然后A取并赋值matrix[left][right],其中matrix是一个n*n的矩阵,初始化为0;
    • matrix[left][right] = max(A先取左边的值 + 回溯结果,A先取右边的值+回溯结果),并返回
    • left == right 时,matrix[left][right] 赋值并返回
    • 针对示例1 更新后的matrix为:
      在这里插入图片描述
  • A取的当前索引i对应的值 + 回溯值,若大于result,则更新result;

 # 输入总块数
n = int(input().strip())# 每块的大小 - 列表
nums = []
for i in range(n):nums.append(int(input().strip()))# A取的时候,矩阵对应[left, right]位置保存A可以获取的最大和
matrix = [[0 for i in range(n)] for j in range(n)]# 回溯函数
def backtrace(left, right):# 全局变量global n, nums, matrix# B取if nums[left] > nums[right]:left = (left + n + 1) % nelif nums[left] < nums[right]: # 块的大小各不相同right = (right + n - 1) % n # 右边的指针向左走一步# A 取并 给matrix赋值(matrix对应位置未赋值时)if matrix[left][right] <= 0: # 为初始值if left == right: # 结束matrix[left][right] = nums[left]else:new_left = (left + 1) % n # 左边指针向右走一步new_right = (right + n - 1) % n# B取过后,A也取较大的# A从左边追溯matrix[left][right] = nums[left] + backtrace(new_left, right)# A从右边追溯,取较大者if nums[right] + backtrace(left, new_right) > matrix[left][right]:matrix[left][right] = nums[right] + backtrace(left, new_right)return matrix[left][right]else:return matrix[left][right]result = 0 # 记录最大结果
i = 0 # n种情况 0 1 2 ... n-1
while True:if i >= n:breakelse:left = (i + n + 1) % nright = (i + n - 1) % nother_sum = backtrace(left, right)if other_sum + nums[i] > result:result = other_sum + nums[i]i += 1
print(result)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/572225.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RSTP、MSTP、VRRP

RSTP协议原理与配置 问题一、STP的收敛延时&#xff08;30秒&#xff08;有BP端口情况下RP端口down&#xff09;或者50秒&#xff08;没有BP端口情况下RP端口down&#xff09;&#xff09; RSTP&#xff1a;Rapid Spanning Tree Protocol RSTP和STP从原理流程上一样&#xf…

Springboot整合Redis报错:Unable to connection Redis

今天在做Springboot整合Redis中碰到下列错误&#xff1a; 基于以上的错误首先在Xshell或者其他远程操控虚拟机的软件上看能不能连接到Redis: [zzllocalhost ~]$ redis-cli -h 192.168.136.132 -p 6379 -a ****** Warning: Using a password with -a or -u option on the comma…

修复ubuntu引导

一、制作ubuntu启动U盘 进入启动盘后&#xff0c;点击Try ubuntu&#xff0c;进入U盘的ubuntu系统。 二、配置和添加源 sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update三、运行 Boot Repair重新制作引导 sudo boot-repair注意&#x…

JavaScript、ES6与微信小程序:工具箱、升级与新房子

JavaScript、ES6和微信小程序三者之间有什么联系&#xff1f;我想&#xff0c;作为初学者还是有点蒙。下面作一个简单的分析&#xff0c;供大家参考。 首先,我们可以把JavaScript想象成一个非常强大的工具箱,里面装满了各种各样的工具。这些工具可以帮助我们完成各种任务,比如…

STM32G4 TIM1触发ADC转换

STM32G4 TIM1触发ADC转换 &#x1f4cd;相关篇《HAL STM32G4 ADC手动触发采集各种滤波算法实现》&#x1f388;《HAL STM32G4 TIM1 3路PWM互补输出VOFA波形演示》&#x1f4cd;《HAL STM32G4内部运放的使用》 ✨继欧拉电子无刷电机驱动相关视频学习 – STM32G4 FOC开发实战—TI…

谷歌Google广告推广开户和投放攻略?

随着出海市场增加&#xff0c;越来越多的中国企业选择借助谷歌Google广告这一全球最大的在线广告平台&#xff0c;拓展海外市场&#xff0c;提升品牌知名度和产品销量。在这个过程中&#xff0c;选择一家专业且富有实战经验的服务商至关重要&#xff0c;而云衔科技正是这样一位…

IIC解挂死

参考这篇写的好 挂死之后 for(i0;i<16;ii1) {发送1个SCL下降沿延时if(SDA1)//已经解除挂死{Master将SDA0&#xff1b;//发送stop前奏发送1个SCL上升沿延时Master将SDA0&#xff1b;//发送stop延时} }

三轴工作台激光焊接机:实现高精度、高效率焊接的新选择

三轴工作台激光焊接机是一种先进的焊接设备&#xff0c;结合了激光焊接技术与三轴工作台的运动控制&#xff0c;实现了焊接过程的高效、精准与自动化。这种设备主要利用激光束的高能量密度和高速度特性&#xff0c;使工件在熔化的同时快速冷却凝固&#xff0c;从而达到高质量的…

(2024,条件注意力,外观保持,潜在随机混合)StreamingT2V:从文本进行一致、动态且可扩展的长视频生成

StreamingT2V: Consistent, Dynamic, and Extendable Long Video Generation from Text 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 2. 相关工作 4. 方法 4.1. 条件注意力…

0.96寸OLED屏调试 ----(二)

所需设备&#xff1a; 1、USB 转 SPI I2C 适配器&#xff1b;内附链接 2、0.96寸OLED显示模块&#xff1b; 备注&#xff1a;专业版、升级版都适用&#xff1b; 读写控制 SSD1306通过 D/C# 和 R/W# 两位来确定&#xff1a;读/写数据&#xff0c;写命令和读状态四种通信行为。…

全国草地资源类型分布图

草地出现在世界各地&#xff0c;约占全球陆地面积的24%&#xff0c;大多分布于大陆内部气候干燥、降水较少的地区&#xff0c;其中澳大利亚、俄罗斯、中国、美国和巴西等国面积较大。中国草地面积约占国土面积的40%&#xff0c;主要分布在内蒙古、东北、西北和青藏高原&#xf…

linux下关闭swap文件系统

临时关闭&#xff08;马上生效&#xff09; 永久关闭&#xff08;重启计算机才能生效&#xff09; vim /etc/fstab