蓝桥杯 2022 国赛 《最大数字》
前言
这道题我一看是个简单,直接上来就是从最高位开始模拟,使用贪心算法。结果不通过,其实这道题不仔细观察会掉坑里。
解题思路:
1. 从 N 的高位开始遍历,因为我们只要保证前面最大化就能保证这个数是最大的。
1. A 和 B 都能保证数字最大化,那么我们就将这两种可能性保存下来
2. 只有A 或者 B 能保证数字最大化,那么直接使用这个数即可
代码实现:
递归
from math import infIn = input().split()
num, A, B = In[0], int(In[1]), int(In[2])
ans = -infdef dfs(num, A, B, idx):global ansif idx > len(num) - 1:returnk1 = k2 = int(num[idx])cnt1 = 9 - k1 if A >= 9 - k1 else Acnt2 = k2 + 1 if B >= k2 + 1 else 0ans1 = num[:idx] + str(k1 + cnt1) + num[idx + 1:]ans2 = num[:idx] + str(9) + num[idx + 1:] if cnt2 != 0 else numans = max(ans, int(ans1), int(ans2))dfs(ans1, A - cnt1, B, idx + 1)dfs(ans2, A, B - cnt2, idx + 1)dfs(num, A, B, 0)
print(ans)
队列
# 队列写法
from math import inf
from collections import dequeIn = input().split()
num, A, B = In[0], int(In[1]), int(In[2])
ans = -infq = deque()
q.append((num, A, B))# 从高位遍历 num 下标
for idx in range(len(num)):result = deque()while q:N, A, B = q.pop()k1, k2 = int(N[idx]), int(N[idx])cnt1 = 9 - k1 if A >= 9 - k1 else Acnt2 = k2 + 1 if B >= k2 + 1 else 0ans1 = N[:idx] + str(k1 + cnt1) + N[idx + 1:]ans2 = N[:idx] + str(9) + N[idx + 1:] if cnt2 != 0 else Nans = max(ans, int(ans1), int(ans2))# 因为当 A 和 B 都能选的时候会导致后续的不确定性,所以将两种可能都保存result.append((ans1, A - cnt1, B))result.append((ans2, A, B - cnt2))q = result
print(ans)
这两种写法我更偏向于队列,因为可读性更高
总结:
实现的算法不是最好的,还可以进行优化。
读题不够认真导致 wa 了4次,最后才完成。
蓝桥杯 2022 国赛 《最大数字》相关推荐
- 题解动态规划:蓝桥杯2022国赛B组 题解 A题目
在这组题(蓝桥杯C/C++ B组 国赛)里面挑了几道喜欢的题目,做了一下,笔记思路如下.(其实是我觉得能做出的题 ) 题目图片来源于:CSDN 罚时大师月色 A:2022 [题目大意] 请问2022, ...
- 蓝桥杯嵌入式国赛模块训练之数码管
文章目录 前言 一.电路原理图 1.共阴极数码管 2.SN74LS595N 3. 扩展板跳线帽连接 二.驱动代码 1.seg.h 2.seg.c 总结 前言 数码管是蓝桥杯嵌入式国赛需准备的第一个模块 ...
- 跑酷游戏-第13届蓝桥杯Scratch国赛真题第3题
[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第27讲. 第13届蓝桥杯青少年组国赛于2022年5月29日举行,形式为在线考试.Scrat ...
- 魔法师盖城墙-第11届蓝桥杯Scratch国赛真题第4题
本文同步发表于"超平的编程课"公众号,更多教程,可移步至公众号. [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第10 ...
- 密室逃脱-第12届蓝桥杯Scratch国赛真题第5题
本文转自于"超平的编程课"公众号,查看更多教程,可以移步至公众号. [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第3 ...
- 存钱罐-第12届蓝桥杯Scratch国赛真题第3题
本文转自于"超平的编程课"公众号,更多教程,可移步至公众号. [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第5讲. ...
- 3D打印小猫-第11届蓝桥杯Scratch国赛真题第6题
本文同步发表于"超平的编程课"公众号,更多教程,可移步至公众号. [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第8讲 ...
- 镜像画笔-第13届蓝桥杯Scratch国赛真题第2题
[导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第28讲. 第13届蓝桥杯青少年组国赛于2022年5月29日举行,形式为在线考试.Scrat ...
- 蓝桥杯 2015国赛 四阶幻方
蓝桥杯 2015国赛 四阶幻方 题目链接 题目描述 把1~16的数字填入4x4的方格中,使得行.列以及两个对角线的和都相等,满足这样的特征时称为:四阶幻方. 四阶幻方可能有很多方案.如果固定左上角为1 ...
最新文章
- 2022-2028年中国钢筘行业市场研究及前瞻分析报告
- 《因果学习周刊》第9期:因果学习中的工具变量
- RSA 加解密算法详解
- 阿里巴巴Java开发规约IDEA插件安装及使用
- c++同一屏幕输出多种颜色字体
- [iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端二)
- (六)构建优化(揭开webpack性能优化的内幕)
- HDU1283 最简单的计算机【模拟】
- lt form gt 在html,HTML lt;formgt; 标签的 accept
- javaScript通用数据类型校验2
- mac html编辑器 免费,Mac下 10 款最棒的编辑器
- AD6.8_mcu123 分享地址
- 数据库实例: STOREBOOK 用户
- linux读取.data文件,Android获取文件夹路径 /data/data/
- iphone4s上市时间_iPhone 4S才是真正意义上的王者, 网友: 现在依旧能打
- 在巨人的肩上:开源GIS工程大全索引
- linux系统时间与网络时间不同步
- WebGame服务端架构分析(一)
- oppo小布机器人_OPPO小布助手2.0强势来袭 三大版块迎来重大升级
- 比夏洛克还厉害:人工智能开始协助警方破案