C++:蓝桥杯-22真题-最大数字

C++:蓝桥杯-22真题-最大数字

自我制定规则无法完全贪心遍历只得92分,
使用dfs深度优先搜索进行贪心遍历


文章目录

  • C++:蓝桥杯-22真题-最大数字
  • 题目
  • 1、自我规则,只得92分,随便看看
    • 代码
  • 2、dfs贪心方法
    • 代码
  • 总结


题目

题目
题目


1、自我规则,只得92分,随便看看

代码

思路:
1、把N的各位数取出,先高位后低位,先减后加
通过92分,忽略了个别情况

2、应该采用dfs深度优先搜索贪心

/*
蓝桥杯22决赛真题-最大数字思路:
1、把N的各位数取出,先高位后低位,先减后加
通过92分,忽略了个别情况2、应该采用dfs深度优先搜索贪心
*/#include "bits/stdc++.h"
using namespace std;vector<int> num;        //获取N的各位数,num[0]为个位数
long long N, A, B, ans; //A加,B减//A,加
void process1(int &N)
{if (N == 9){N = 0;}else{N += 1;}
}//B,减
void process2(int &N)
{if (N == 0){N = 9;}else{N -= 1;}
}//获取N的各位数
void getNum(const long long N)
{long long x, y; //x为剔除掉y后的新值,y为获取的各位数x = N;for (int i = 0; i < 17; i++) //最大位数有17位{if (i == 0){num.push_back(N % 10);}if (x < 10) //x只有一位时跳出循环ong double x;{break;}y = (x / 10) % 10;num.push_back(y); //先进低位再进高位x = x / 10;}
}void printNum(vector<int> &num)
{// for (vector<int>::iterator it = num.begin(); it != num.end(); it++)// {//     cout << *it << " ";// }// cout << endl//      << "-------------" << endl;for (int i = num.size() - 1; i >= 0; i--){cout << num[i];}cout << endl;
}//并不是全部遍历考虑到,会出现漏的情况,故为92分
void mySolution()
{//先处理高位在处理低位for (int i = num.size() - 1; i >= 0; i--){if (A == 0 && B == 0){break;}if (num[i] <= 8) //0-8,9不动{//当加和减都能变9时,先加if (num[i] > 5 && B >= (num[i] + 1) && A >= (9 - num[i])){int temp;temp = 9 - num[i]; //次数A = A - temp;while (temp--){process1(num[i]);}}if (B >= (num[i] + 1)) //够减{int temp = num[i] + 1;B = B - temp; //减少B次数while (temp--){process2(num[i]);}}else //不够减,用加{int temp;if (A > (9 - num[i])) //A的次数比加到9还多时{temp = 9 - num[i]; //次数A = A - temp;while (temp--){process1(num[i]);}}else //A的次数刚好到9或者加不到9时,直接用完A{temp = A; //次数A = A - temp;while (temp--){process1(num[i]);}}}}}printNum(num);
}int main(int argc, const char **argv)
{cin >> N >> A >> B;//1操作<=A,2操作<=B,求最大getNum(N);// 一般方法mySolution();return 0;
}

2、dfs贪心方法

代码

//思路:
1、以N的位数nums作为退出条件来获取当前的最大值
2、以跟新完的实际值a作为新的值
3、在加和减的规则下进行dfs深度优先搜索找最大的值

  • 重点找到退出dfs递归的条件和进行跟新的变量
/*
蓝桥杯-22决赛真题-最大卡牌-dfs方法//思路:
1、以N的位数nums作为退出条件来获取当前的最大值
2、以跟新完的实际值a作为新的值
3、在加和减的规则下进行dfs深度优先搜索找最大的值
*/#include "bits/stdc++.h"
using namespace std;long long N, A, B; //A加,B减
long long ans = 0;//a当前值大小,nums当前位数,A加数,B减数
void dfs(long long a, long long nums, long long A, long long B)
{if (nums == 0) //变量结束,返回结果{ans = max(ans, a);return;}int d = a / nums % 10; //d为当前位数值//加减规则遍历完if (A > 9 - d) //A够加时{int temp = A - (9 - d);dfs(a + (9 - d) * nums, nums / 10, temp, B);}else //A全加满{dfs(a + nums * A, nums / 10, 0, B);}if (B != 0){if (B >= d + 1) //B够减时{int temp = B - (d + 1);dfs(a - nums * d + nums * 9, nums / 10, A, temp); //够减时,减至9,a值跟新应该为先减到原来改位值,再加上改位*9,即123先变103再变193}}
}
int main(int argc, const char **argv)
{cin >> N >> A >> B;long long a, nums;a = N;nums = 1;//获取N的次方数,N=123时,num =10^3 =1000;while (a){a /= 10;nums *= 10;}dfs(N, nums / 10, A, B); //dfs遍历所有位数,N=123时,nums=100,10,1,一共三次所以nums/10cout << ans << endl;return 0;
}

总结

熟悉dfs方法, 重点找到退出dfs递归的条件和进行跟新的变量
参考
https://blog.csdn.net/m0_58177653/article/details/125345906?ops_request_misc=&request_id=&biz_id=102&utm_term=%E8%93%9D%E6%A1%A5%E6%9D%AF%E5%8D%A1%E7%89%8C&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-8-125345906.142v73wechat,201v4add_ask,239v2insert_chatgpt&spm=1018.2226.3001.4187#t4

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

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

相关文章

移动广告效果监测,App推广广告投放归因工具

Xinstall移动广告实时监控投放效果&#xff0c;精准监测各渠道曝光量、点击量、下载量、转化率等全链路核心数据&#xff0c;提供多平台数据聚合查看功能、报表加密分享功能、防作弊保护功能。帮助移动广告主量化移动端推广活动效果&#xff0c;实时追踪、运营、优化广告链路各…

facebook海外社交媒体广告平台的几种广告形式和类型

facebook海外社交媒体广告平台的几种广告形式 1、图像&#xff08;Image&#xff09; 图像是最简洁的广告方式&#xff0c;附带一些文字和CTA按钮。关于想做海外社交媒体的企业来讲&#xff0c;在投放 此类广告时&#xff0c;最好是简洁地展示产品图片。 2、视频&#xff08…

2022中国广告行业研究报告:投放方式呈现九大新变化

文&#xff1a;任泽平团队 导读 广告行业迎来大变局&#xff0c;传统媒体势弱&#xff0c;移动互联网新媒体快速成为主流&#xff0c;背后的根本逻辑得用户关注者得天下。近年&#xff0c;随着消费者心理精神需求升级、科技快速进步以及市场环境迅速变化&#xff0c;我国的广…

广告行业中那些趣事系列63:使用chatgpt类大模型进行文本分类任务

导读&#xff1a;本文是“数据拾光者”专栏的第六十三篇文章&#xff0c;这个系列将介绍在广告行业中自然语言处理和推荐系统实践。本篇主要介绍了使用chatgpt类大语言模型进行文本分类任务&#xff0c;对于希望使用chatgpt类大语言模型上进行数据标注、文本分类和关键词抽取等…

GPT-4竟被CS学生「开源」了!

Datawhale开源 开源&#xff1a;免费GPT-4&#xff0c;编辑&#xff1a;新智元 【导读】最近&#xff0c;一名来自欧洲的计算机系学生竟然把GPT-4给「开源」了。利用OpenAI加持的网站的API&#xff0c;开发者即可免费体验GPT-3.5/GPT-4。对此&#xff0c;OpenAI紧急发邮件警告…

写公开信可别等被喷,才发现其实可以这样

正文共 1022 字&#xff0c;阅读大约需要 4 分钟 公务员必备技巧&#xff0c;您将在4分钟后获得以下超能力&#xff1a; 快速生成公开信 Beezy评级 &#xff1a;B级 *经过简单的寻找&#xff0c; 大部分人能立刻掌握。主要节省时间。 推荐人 | Kim 编辑者 | Linda ●图片由Le…

IDE装上ChatGPT,这款编辑器真的做到可以自动写代码了,彻底炸裂!!

上一篇&#xff1a;用ChatGPT画了亿些小姐姐&#xff0c;被惊艳到了&#xff01;&#xff01; 介绍 Cursor 是集成了 GPT-4 的 IDE 工具&#xff0c;目前免费并且无需 API Key&#xff0c;支持 Win、Mac、Linux 平台&#xff0c;可以按要求生成代码&#xff0c;或者让 AI 帮助优…

科大讯飞回应薪酬回溯制度;OpenAI宣布开放API,开发人员可将ChatGPT集成到自己产品;Godot 4.0发布|极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…

ubuntu18.04设置自启动踩坑贴(拿来即用)---全网搜索半天都没有,ChatGPT回答都是有问题的!!

前言&#xff1a;其实很简单&#xff0c;全网的资料实在坑太多&#xff08;无语&#xff09;&#xff0c;有一篇还不错&#xff0c;我大多数借鉴这篇https://cloud.tencent.com/developer/article/1803805&#xff0c;但直接用貌似也不通&#xff0c;这边记录了我的实测可跑通版…

centos7 设置ssh_key 登陆 公钥与密钥,借助工具生成 .ppk 文件,

这里选择不对root进行直接操作&#xff0c;也就是会出现各个用户所对应的key 1.新增登陆用户,分配root权限组 [rootlocalhost ~]# adduser zhw2 [rootlocalhost ~]# passwd zhw2 Changing password for user zhw2. New password: BAD PASSWORD: The password is shorter than…

Gitlab设置ssh密钥详解

系列文章目录 文章目录 系列文章目录前言一、创建ssh key1.在客户端查看有没有密钥2.在客户端查看当前git的用户名和邮箱3.输入密码创建ssh key4.在ssh文件夹下有两个文件&#xff0c;一个是私钥&#xff0c;以pub结尾的为公钥&#xff0c;把公钥添加到gitlab中的ssh密钥中5.回…

SSH公私密钥模式,Git配置使用

Git关联验证本地和远程仓库的方式有&#xff1a; -HTTP模式(需要存储账号密码) 如&#xff1a;https://gitee.com/BB-X/git-idea-test.git -SSH模式(需要匹配公私秘钥) 如&#xff1a;gitgitee.com:BB-X/git-idea-test.git 1、生成公私秘钥对 2、在远程托管平台账号中配置公钥 …

git设置SSH密钥

Git是分布式的代码管理工具&#xff0c;远程的代码管理是基于SSH的&#xff0c;所以要使用远程的Git则需要SSH的配置。git设置密钥的步骤如下&#xff1a; 步骤1 在客户端查看有无密钥 命令行输入&#xff1a; cd ~/.ssh如果提示如下图所示&#xff0c;就说明还没有创建密钥…

Git密钥配置

一、下载并安装Git 官网下载地址点击这里 二、打开git bash 选择一个空文件夹&#xff0c;右键选择Git Bash Here 三、配置密钥 在Git Bash界面输入git命令 初始化自己的用户名和邮箱 git config --global user.name "输入你的用户名" git config --global u…

HLS新手入门教程

文章目录 HLS学习笔记1. 什么是HLS2. HLS开发流程3. HLS基本语法3.1. #pragma HLS3.2. HLS数据类型3.3. HLS模块定义3.4. 数组分区3.5. 流水线优化3.6. 组合逻辑优化3.7. 一些基本概念3.8. 完整示例3.8.1. 矩阵乘法3.8.2. 函数调用和循环3.8.3. 流水线和并行化指令 4. HLS高级语…

chatgpt赋能python:Python入门基础教程

Python入门基础教程 Python是一种高级编程语言&#xff0c;开发者可以编写多种应用程序&#xff0c;从简单的脚本到复杂的应用程序。Python易学易用&#xff0c;是新手和专业人士的首选编程语言。本文将介绍Python入门基础教程&#xff0c;帮助您开始学习Python编程。 安装Py…

新手入门 Python 的不同方法

学习Python意味着练习Python。在本文中&#xff0c;我们将探讨一些最流行的方法来练习 Python 编程技能。 学习几乎任何新技能不仅需要获得知识&#xff0c;还需要经验。这就是我们通过实践获得的。 本文将帮助任何最近开始学习 Python 的人&#xff0c;或者已经了解 Python 基…

提高情商必读的10本书籍推荐

职场中&#xff0c;情商&#xff08;即情绪智慧&#xff09;往往被认为比智商更为重要。情商不仅有助于更好地理解自己和他人的情绪&#xff0c;还能帮助我们在职场中更好地沟通、协作与领导。下面我们为大家推荐10本提高情商必读的书籍&#xff0c;帮助你在职场中取得更好的成…

必读的一些书籍推荐

推荐一&#xff1a;《如雪如山》作者: 张天翼 本书以女性视角隐喻女性的生存故事。所有的女人都藏着一块相同的拼图。他们暗中的悲欢离合&#xff0c;爱恨情仇如此不同&#xff0c;却又相通。 作者张天翼通过七位心思敏锐、笔触细腻犀利的女主人公的人生片段&#xff0c;梳理出…

有哪些人际关系书籍值得推荐?看完这两本书你也能成为社交高手!

要想提高人际关系和社交能力&#xff0c;阅读确实不失为一个好办法。 但是问题是该看什么书呢&#xff1f; 有哪些人际关系书籍值得推荐&#xff1f; 笔者强烈推荐《情商必读12篇》和《沟通与说服必读12篇》这两本书。建议你能把这两本书都完完整整、一字不漏地看完&#xf…