最大数字(java)(DFS实现)

1.最大数字 - 蓝桥云课

因为N最大是·10 的17次方,

所以可以利用字符串来处理输入的数字的每一位

并且是从高到低依次处理的

然后通过函数charAt(i)来获取第i位的字符

再减去‘0’就可以将字符转化为整型了

假设每一位数字都是x

然后通过两种操作

加或者减来操作

然后每次操作的话我们先判断加

如果这个数字的第i位还存在的话

那就可以进行加或者减

然后我们开始dfs之前先

判断加多少位,能把第一位变成9 

我们尽最大的努力去把每一位都加到9

两种情况

第一种 如果加法 的次数最多不超过9-x 吧 

因为加的次数多了又加到0了

做无用功了,你说对吧

第二种情况 如果加法 的次数不足以把x加到9 

我们

加的次数就是9-x 和n 中的最小值

(9-x)也就是x加到9的次数

t 取 (9-x)和 n 的最小值

回溯之前 : 剩余的 加的次数 就是n =n -t; 

然后就开始dfs()嵌套循环了

开始的时候是

dfs(i,v) i表示当前这个数的位数的下标

v 用来保存操作之后的值

dfs(i+1,v*10+t) 表示进入下一位,便利下一个节点i+1

然后需要保存这一次加法之后的值

然后如果回溯回回来就需要把给加法次数加回来

ok自己写一遍

emm,又出问题了,孩子们

import java.util.Scanner;/*** @author zb* date2025/3/26 21:32*/
public class Main {static int n ;static int add;static   int jian;static String num;static int max = 0;public static void main(String[] args) {Scanner in = new Scanner(System.in);n = in.nextInt();num = ""+n;add = in.nextInt();jian  = in.nextInt();
//       先从最高为开始操作dfs(0,0);System.out.println(max);in.close();}
//代表给第i位操作 ,v 用来保存操作的结果private static void dfs(int i, int v) {if(i<num.length()){
//            加法操作
//            获取第i位的数字int numi = num.charAt(i)-'0';
//            加到9所需要的次数int t = 9  - numi;
//            如果加的次数不能让这个数字加到9if(add<=t){
//              能加多少算多少t = add;}
//          减去消耗掉的加法次数add = add - t;
//            System.out.println(t+"   "+add);
//          便利叶子节点dfs(i+1,v*10 +numi+t);
//     从叶子节点变回来了     回复现场add = add+ t;
//            减法 的话一定要把这个数字给变成0
//           也就是减法必须要被这个位置的数字大
//            某一位最大只能变成9if(numi-jian<0&&numi!=9){
//                numi  = 9;
//               等于-1也就是变成9jian = jian - numi-1;
//                System.out.println("   "+jian);dfs(i+1,v*10 +9);jian  = jian + numi + 1;}}else {
//            保存进行操作之后得到的最大值max = Math.max(max,v);}}
}

整体思路没有问题,死于段错误

看了一下题目发现

最大的n已经完全超出了int 的范围了,当时写的时候没有注意输入的N 的范围

查了一下java中的long 范围是 从-2 的63次方到2 的63 次方-1,也就是范围到2 * 10 的18次方-1

用long 来接受输入n,就行了,emm,下次一定要睁大眼睛看输入的范围

接收输入得用nextLong ()

输出的sum也得用long 类型输出

然后dfs的第二个保存修改之后的数字的参数也得用long 

emm

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

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

相关文章

04 单目标定实战示例

看文本文,您将获得以下技能: 1:使用opencv进行相机单目标定实战 2:标定结果参数含义和数值分析 3:Python绘制各标定板姿态,查看图像采集多样性 4:如果相机画幅旋转90,标定输入参数该如何设置? 5:图像尺寸缩放,标定结果输出有何影响? 6:单目标定结果应用类别…

手机销售终端MPR+LTC项目项目总体方案P183(183页PPT)(文末有下载方式)

资料解读&#xff1a;手机销售终端 MPRLTC 项目项目总体方案 详细资料请看本解读文章的最后内容。在当今竞争激烈的市场环境下&#xff0c;企业的销售模式和流程对于其发展起着至关重要的作用。华为终端正处于销售模式转型的关键时期&#xff0c;波士顿 - 华为销售终端 MPRLTC …

如何在 vue 渲染百万行数据,vxe-table 渲染百万行数据性能对比,超大量百万级表格渲染

vxe-table 渲染百万行数据性能对比&#xff0c;超大量百万级表格渲染&#xff1b;如何在 vue 渲染百万行数据&#xff1b;当在开发项目时&#xff0c;遇到需要流畅支持百万级数据的表格时&#xff0c; vxe-table 就可以非常合适了&#xff0c;不仅支持强大的功能&#xff0c;虚…

ubuntu24 部署vnc server 使用VNC Viewer连接

前提条件 已创建一台Ubuntu 24.04(20.22通用)操作系统的云服务器&#xff0c;并且为云服务器绑定弹性公网IP&#xff0c;确保可以连接互联网。 已在本地PC安装VNC Viewer客户端。 操作步骤 服务器内安装vnc server以及桌面环境 apt update sudo apt install xfce4 xfce4-…

【数据结构】栈 与【LeetCode】20.有效的括号详解

目录 一、栈1、栈的概念及结构2、栈的实现3、初始化栈和销毁栈4、打印栈的数据5、入栈操作---栈顶6、出栈---栈顶6.1栈是否为空6.2出栈---栈顶 7、取栈顶元素8、获取栈中有效的元素个数 二、栈的相关练习1、练习2、AC代码 个人主页&#xff0c;点这里~ 数据结构专栏&#xff0c…

06-SpringBoot3入门-常见注解(简介)

1、Controller ResponseBody Controller是Spring MVC 中的注解&#xff0c;负责处理 HTTP 请求。 ResponseBody是Spring MVC 中的注解&#xff0c;用于直接将方法的返回值作为 HTTP 响应体。 2、RestController RestController Controller ResponseBody 3、RequestMappin…

工作记录 2017-03-10

工作记录 2017-03-10 序号 工作 相关人员 1 修改邮件上的问题。 更新RD服务器。 郝 更新的问题 1、修改了payment detail和patient insurance的health plan的输入方式。 2、new payment detail时&#xff0c;增加了allowable的处理。 3、选择payer的窗体&#xff0c;增…

MySQL数据库和表的操作

#使用数据库 use 数据库名; # 查询当前数据库是哪个数据库 select database(); 查看数据库版本 SELECT VERSION(); 查看当前用户 SELECT USER(); 查看所有用户() SELECT User,Host,Password FROM mysql.user;数据库 MySQL自带数据库&#xff1a; Information_schema: 主要存储…

lxd-dashboard 图形管理LXD/LXC

前言 LXD-WEBGUI是一个完全用AngularJS编写的Web应用程序,无需应用服务器、数据库或其他后端服务支持。只需要简单地托管静态HTML和JavaScript文件,就能立即投入使用。这个项目目前处于测试阶段,提供了直观的用户界面,帮助用户便捷地管理和控制LXD实例。 安装lxd-dashboa…

[GESP202503 C++一级题解]:B4257:图书馆里的老鼠

[GESP202503 C++一级题解]:B4257:图书馆里的老鼠 题目描述 图书馆里有 n n n 本书,不幸的是,还混入了一只老鼠,老鼠每 x x x 小时能啃光一本书,假设老鼠在啃光一本书之前,不会啃另一本。请问 y y y 小时后图书馆里还剩下多少本完整的书。 输入格式 三行,第一行一…

从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.2.2文本生成逻辑:Top-k采样与温度控制

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 2.2.2 文本生成逻辑:Top-k采样与温度控制1. 文本生成的核心挑战与数学框架1.1 自回归生成的基本流程2. `Top-k`采样原理与工程实现2.1 数学定义与算法流程2.2 PyTorch实现优化3. 温度控制的数学本质与参…

Unity中实现UI的质感和圆角

质感思路有两种&#xff1a; 一种是玻璃质感的做法&#xff0c;抓取UI后面的图像做模糊&#xff08;build是GrabPass&#xff0c;urp抓图像我有写过在往期文章&#xff09;&#xff0c;这个方式网络上有很多就不写了&#xff1b; 另外一种是使用CubeMap的方式去模拟质感&…

[异步监听事件、异步绑定属性]通过vue的this.$refs.组件.$props和.$on实现异步绑定组件属性和事件监听

child.vue <template><div><el-button type"primary" click.stop"$emit(get, data)">点击传参</el-button></div> </template> <script> export default { name: "child", props: ["data"…

第六届 蓝桥杯 嵌入式 省赛

参考 第六届蓝桥杯嵌入式省赛程序设计题解析&#xff08;基于HAL库&#xff09;_蓝桥杯嵌入式第六届真题-CSDN博客 一、分析功能 RTC 定时 1&#xff09;时间初始化 2&#xff09;定时上报电压时间 ADC测量 采集电位器的输出电压信号。 串行功能 1&#xff09;传送要设置…

为什么要将项目部署到外部tomcat

一、是什么 指将你的Java Web应用程序&#xff08;如WAR包&#xff09;安装并运行在一个独立安装的、位于项目外部的Tomcat服务器上&#xff0c;而不是使用内嵌的或开发环境自带的服务器。 外部Tomcat 指独立安装的Tomcat服务器&#xff08;如从Apache官网下载的Tomcat&#…

企业级全栈开发终极指南:Spring Boot+Vue3+Kubernetes实战,从0到上线高并发系统

简介 本文以电商系统为例,完整呈现从需求分析到上线运维的企业级开发全流程。包含12个关键步骤、30+代码示例、5个架构设计图,以及完整的Docker/Kubernetes部署方案。所有代码均符合企业级规范,可直接用于生产环境。 企业级开发的终极挑战 行业痛点: 90%的开发者在企业级…

蓝桥杯嵌入式赛道复习笔记8(eeprom读写)

原理学习 自己看一下江科大的存储器的读取&#xff0c;原理是一样的。只是使用了IIC原理是不变的 代码 cubeMX的配置 代码 eeprom层代码的书写 #include "eeprom_display.h" uint8_t data; uint8_t eeprom_read(uint8_t addr){I2CStart();I2CSendByte(0xa0);I2…

IP数据报报文格式

一 概述 IP数据报由两部分组成&#xff1a;首部数据部分。首部的前一部分是固定长度&#xff0c;一共20字节大小&#xff0c;是所有IP数据报文必须具有的&#xff1b;固定部分后面是一些可选字段&#xff0c;其长度是可变的。 二 首部固定部分各字段意义 &#xff08;1&…

高光谱工业相机+LED光源系统助力材料分类和异物检测、实现高速在线检测

检测光源包括可见光&#xff0c;如红光、蓝光和绿光以及其他波长的光&#xff0c;如紫外和红外波长&#xff0c;可以选择与检测对象物相应的波长。但由于能够照射的波长较窄&#xff0c;例如受到同色异物混入或多个素材的材质分类等&#xff0c;可能需要使用可照射多种波长的光…

如何快速解决django存储session变量时出现的django.db.utils.DatabaseError错误

我们在学习django进行web编程的时候&#xff0c;有时需要将一些全局变量信息存储在session中&#xff0c;但使用过程中&#xff0c;却发现会引起数据库的报错。通过查看django源码信息&#xff0c;发现其对session信息进行了ORM映射&#xff0c;如果数据库中不存在对应的表信息…