蓝桥杯DFS-最大数字

 

 解题思路

我们从最高位开始要利用自己的1号操作和2号操作保证当前这个数位的数一定要尽可能最大。

然后分别考虑两种操作,首先两种操作不可能混用,因为它们是抵消的效果,所以要么对这个数全使用1操作,要么2操作。假设某个数位的值为x,首先考虑1号操作,使用后可以让该数位变大,出于贪心考虑,我们想让它变成9,那么需要进行9-x次1号操作,当然可能此时1号操作并不足以让我们将x变成9,但我们还是使用剩余的全部的次数将其变大,所以每次考虑1号操作应该使用的操作数t应该为t=min(n,9-x),此时x将变为x+t,然后进行下一位的判断。

其次我们考虑2号操作,这个的判断比较简单,它是让某个值减小,唯一能让某个数变大的机会就是将其减到0后再减就会变成9。那么这样操作需要的次数就是x+1,如果操作次数不够,那我们宁愿不使用,因为这只会让这个数位变得更小。

在深搜dfs的过程中,参数记录遍历到第几个数位以及此时累计的和,当搜索完所有数位后,将此时的和与答案进行一个取max,最后的值则为答案。

代码及解析

#include<bits/stdc++.h>
using namespace std;
char s[20];
long long ans;                //ans: 最大值,要用long long
int A,B;                      //A:1号操作剩余次数  B:2号操作剩余次数
void dfs(int i,long long v){     //i:当前处理到第i位,v:前面已经得到的值
    int d = s[i]-'0';         //第i位的数字
    if(s[i]){                 //如果s[i]为'\0',处理结束
        int t = min(A,9-d);   //1操作次数t:最大到9
        A -= t;               //更新A。如果A=0,也要继续dfs,目的是求值:v*10+d+t
        dfs(i+1,v*10+d+t);    //这一位最大是x+t。v*10+d+t是到这一位为止的数值
        A += t;               //恢复现场
        if(B>d){               //操作2:可以减到9
            B -= d+1;          //做d+1次,减到9
            dfs(i+1,v*10+9);
            B += d+1;          //恢复现场
        }
    }
    else   ans = max(ans,v);   //处理结束,得到这次DFS的最大值

}
int main(){
    cin >> s >> A >> B;        //数字N按字符串s读入
    dfs(0,0);                  //从N的最高位开始
    cout << ans;
    return 0;
}

 对于v*10的部分,是每次都*10,即使是0,当乘3次就成了1000,大家可以手算演示一下。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

easyexcel处理复杂表头

需求&#xff0c;模板如下 功能如下 开始整活&#xff0c;依赖包。 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.2.1</version> </dependency>下载导入模板 1.方法 GetMapping…

详解FB广告三种受众类型,提升广告投放精准度

在Facebook广告中&#xff0c;精确地定位潜在客户至关重要。然而&#xff0c;达到完美精准度通常是一个逐渐逼近的过程&#xff0c;涉及到多次迭代和细化目标人群。Facebook提供了三种主要的受众类型&#xff1a;核心受众(Core Audiences)、自定义受众(Custom Audiences)和类似…

携手博鳌亚洲论坛,五粮液“以和美,敬世界”

执笔 | 尼 奥 编辑 | 扬 灵 3月26-29日&#xff0c;以“亚洲与世界&#xff1a;共同的挑战 共同的责任”为主题的博鳌亚洲论坛2024年年会在海南博鳌盛大召开&#xff0c;聚集全球政商学媒等各国代表汇聚一堂&#xff0c;围绕投资亚洲未来、减少贸易碎片化、加速迈向零碳电…

朗汀留学美国生物医学工程专业留学部分录取案例合集

满怀期待的憧憬与金榜题名的喜悦交织着未来的掌声&#xff0c;捧在手心里的不仅仅是一份一份努力浇灌的录取通知&#xff0c;更是一起拼搏走过的岁月沉淀。 我们感恩每一位朗汀留学的学生和家长&#xff0c;是你们的支持与信任&#xff0c;让我们有机会共享此刻的荣耀&#xff…

初涉 VS Code 插件开发

官方文档&#xff1a;Extension API | Visual Studio Code Extension API 实战记录 从hello word&#xff01;开撕 根据文档开始创建插件 Your First Extension | Visual Studio Code Extension API 全局安装Yeoman工具 npm install --global yo generator-code 使用Yeom…

nginx 配置访问地址和解决跨域问题(反向代理)

1、配置访问地址&#xff08;通过ip访问&#xff09; //配置ip访问地址 location ^~/auditApp{alias /usr/local/front-apps/cbd/auditApp;index index.html;if (!-e $request_filename) {rewrite ^/(.*) /auditApp/index.html last;break;}} 2、解决跨域问题&…

二叉树后序遍历算法多种实现傻傻分不清楚

致力于C、C、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享。 若作品对您有帮助&#xff0c;请关注、分享、点赞、收藏、在看、喜欢。您的支持是我们为您提供帮助的最大动力。 1.介绍 二叉树的后序遍历是一种遍历二叉树的策略&#…

运行v3+ts+vite+eslint碰到的问题集合

1、问题&#xff1a;提示Missing semicolon semi&#xff08;缺少分号&#xff09; 解决&#xff1a;对比其他ts代码&#xff0c;发现在orderDetail后少了分号&#xff0c;加上去之后就可以了。好严格&#xff01;&#xff01;&#xff01; 2、问题&#xff1a;The template…

idea开发 java web 疫情信息查询系统bootstrap框架web结构java编程计算机网页接口查询

一、源码特点 java 疫情信息查询系统是一套完善的完整信息系统&#xff0c;结合java web开发和bootstrap UI框架完成本系统 &#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 前段主要技术 css j…

PP-Structure 文档分析

本文接着上一篇文章&#xff1a;PaddleOCR环境搭建、模型训练、推理、部署全流程&#xff08;Ubuntu系统&#xff09;-CSDN博客 主要包括以下几种&#xff1a; PP-Structure 文档分析 --官方地址 1.1版面分析和表格识别1.2版面恢复1.3关键信息抽取 1. 简介 PP-Structu…

云手机提供私域流量变现方案

当今数字营销领域&#xff0c;私域流量是一座巨大的金矿&#xff0c;然而并非人人能够轻易挖掘。一家营销公司面临着利用社交、社区、自媒体等应用积累私域流量&#xff0c;并通过销售产品、推送广告等方式实现流量变现的挑战与困境。本文将详细介绍这家公司是如何通过云手机&a…

填字母游戏【蓝桥杯】/博弈+dfs

填字母游戏 博弈dfs #include<iostream> #include<map> using namespace std; //要用map存储已经处理过的字符串不然会超时 map<string,int> m; //dfs返回的就是结果 int dfs(string s) {//剪枝if(m.find(s)!m.end()) return m[s];//找到LOL代表输了if(s.fi…

[STL-list]介绍、与vector的对比、模拟实现的迭代器问题

一、list使用介绍 list的底层是带头双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前一个元素和后一个元素。与其他的序列式容器相比(array&#xff0c;vector&#xff0c;deque)&#xff0c;list通常在任意位置进行…

Kubernetes(k8s)监控与报警:Prometheus + Grafana + Alertmanager(超详细)

Kubernetes&#xff08;k8s&#xff09;监控与报警&#xff1a;Prometheus Grafana Alertmanager&#xff08;超详细&#xff09; 1、部署环境2、基本概念简介2.1、Prometheus简介2.2、Grafana简介2.3、Alertmanager简介2.4、Prometheus GrafanaAlertmanager监控架构 3、Pro…

品牌发言稿怎么写?纯干货

品牌发言稿的重要性不言而喻&#xff0c;它不仅代表着品牌形象&#xff0c;更是沟通品牌与消费者、合作伙伴的桥梁。如何撰写一篇高质量的品牌发言稿&#xff0c;成为许多品牌关注的焦点。伯乐网络传媒十多年文案撰写经验&#xff0c;今天就来给大家讲一讲。 一、品牌发言稿的组…

关系(三)利用python绘制相关矩阵图

关系&#xff08;三&#xff09;利用python绘制相关矩阵图 相关矩阵图&#xff08;Correlogram&#xff09;简介 相关矩阵图既可以分析每对变量之间的相关性&#xff0c;也可以分析单变量的分布情况。相关性以散点图的形式可视化&#xff0c;对角线用直方图/密度图表示每个变量…

面试字节被挂了

分享一个面试字节的经历。 1、面试过程 一面&#xff1a;上来就直接"做个题吧"&#xff0c;做完之后&#xff0c;对着简历上一个项目聊&#xff0c;一直聊到最后&#xff0c;还算比较正常。 二面&#xff1a;做自我介绍&#xff0c;花几分钟聊了一个项目&#xff…

Notepad++软件安装及配置说明

Notepad是 Windows操作系统下的一套文本编辑器&#xff0c;有完整的中文化接口及支持多国语言编写的功能。 Notepad功能比 Windows自带记事本强大&#xff0c;除了可以用来制作一般的纯文字说明文件&#xff0c;也十分适合编写计算机程序代码。Notepad不但可以显示行号&#xf…

精酿啤酒的未来:创新与传统的碰撞

随着精酿啤酒的兴起&#xff0c;越来越多的人开始关注这一领域的发展趋势。精酿啤酒作为啤酒中的一种新兴类别&#xff0c;其未来发展将受到创新与传统的碰撞和影响。在这其中&#xff0c;Fendi Club啤酒屋作为精酿啤酒的代表性场所&#xff0c;将继续发挥其重要的作用。 首先&…

windows10系统下TP-LINK万兆网卡属性配置高级说明

文章目录 打开配置属性说明ARP Offload&#xff1a;ARP地址解析协议卸载Downshift retries:降档重试次数Energy-Efficient Ethernet:高能效以太网Flow Control:流量控制Interrupt Moderation:中断调整Interrupt Moderation Rate:中断调节率IPv4 Checksum Offload:IPv4校验和卸载…