当前位置: 首页 > news >正文

最大数字——蓝桥杯十三届2022国赛大学B组真题

](https://img-blog.csdnimg.cn/direct/7822beb2066b439f90d50069d3c004b6.png)

问题分析

这道题属于贪心加回溯。所有操作如果能使得高位的数字变大必定优先用在高位,因为对高位的影响永远大于对低位的影响。然后我们再来分析一下,如何使用这两种操作?对于加操作,如果能使这一位的数字加到9则变成9,否则使这个数字尽量大。对于减操作,如果能使这一位的数字减到9则变成9,否则不采用减操作。然后我们用回溯来分别对该位进行加操作和减操作,记录最大值。时间复杂度大概是 O ( 2 l g n ) O(2^{lg^{n}}) O(2lgn),不超过 1 0 4 10^{4} 104的数量级。因此回溯是可行的。

AC_Code

#include <bits/stdc++.h>
using namespace std;
string result;
void dfs(string str,int i,int a,int b){if(i==str.size()||a==0&&b==0){if(result<str){result=str;}return;}char ch=str[i];if('9'-ch<=a){//能加到9 str[i]='9';dfs(str,i+1,a-('9'-ch),b);}else{//不能加到9 str[i]=ch+a;dfs(str,i+1,0,b);}if((ch-'0'+1)<=b){//能减到9 str[i]='9';dfs(str,i+1,a,b-(ch-'0'+1));}else{//不能减到9 str[i]=ch;dfs(str,i+1,a,b); }
}
int main() {string str;int a,b;cin>>str>>a>>b;dfs(str,0,a,b);cout<<result<<endl;return 0;
}
http://www.lryc.cn/news/348184.html

相关文章:

  • 查看微信小程序主包大小
  • B树与B+树的奥秘:原理解析与性能
  • Unity组件入门篇目录
  • 【Python技术】使用akshare、pandas高效复盘每日涨停板行业分析
  • kubeflow文档-介绍与架构
  • 传输层的TCP流量控制比数据链路层作用范围更广
  • CSS表格
  • 东芝移动硬盘数据恢复方法有哪些
  • FullCalendar日历组件集成实战(1)
  • wps
  • 【软设】常见易错题汇总
  • 安全数据交换系统哪个好?该如何选型?
  • 用matplotlib制作代码和色块
  • centos无法tab补全至文件
  • 大模型训练框架DeepSpeed使用入门(1): 训练设置
  • 自定义类型——结构体、枚举和联合
  • Windows11系统安装Mysql8之后,启动服务net start mysql报错“服务没有响应控制功能”的解决办法
  • WIFI模块的AT指令联网数据交互--第十天
  • 设计模式Java实现-迭代器模式
  • 单页源码加密屋zip文件加密API源码
  • 47.全排列
  • 呼叫中心系统选pscc好还是okcc好
  • 【SRC实战】前端脱敏信息泄露
  • 区块链 | NFT 水印:Review on Watermarking Techniques(三)
  • 初识C语言——第十九天
  • 软件需求工程习题
  • Win10弹出这个:https://logincdn.msauth.ne
  • Vue2 动态路由
  • LeetCode746:使用最小花费爬楼梯
  • DockerFile介绍与使用