[蓝桥杯]接龙数列(C语言)

目录

题目链接

题目理解

解题思路

完整代码 

重难点解答

*dp数组的具体用法

*对于dp[b]=dp[a]+1>dp[b]?dp[a]+1:dp[b]的解释


题目链接

    [蓝桥杯 2023 省 B] 接龙数列 - 洛谷

题目理解

    这道题让我们求任给的一串数字,若想让其变成接龙数列最少需要删除的数字个数。首先我们要明白什么是接龙数列。接龙数列是前一个数的末位数字与下一个数的第一位相同的数列(比如 37、798、888)。题目理解起来没什么难度,下面我们来讲一下解题思路。

解题思路

  这道题目的思路是找出给定数字序列中能够凑成的最长接龙序列,然后用总长度减去最长序列的长度,即为最少需要删除的数字个数。

  1. 定义一个长度为10的数组dp,用于记录每个数字作为末位数字时的最长接龙序列长度。
  2. 遍历输入的数列,对于每个数,将其首位数字记为a,末位数字记为b。
  3. 使用动态规划的思想,更新dp数组中对应的值。dp[b]的值应该是dp[a]+1和dp[b]的较大值。
  4. 同时,记录最大的接龙序列长度amount。
  5. 最后,输出n-amount,即最少需要删除的数的个数。

完整代码 

#include<stdio.h>
main()
{
	int a=0,b=0;//a为数字的首位数,b为数字的末数
	int n=0,amount=0;//n表示数列中数字个数,amount表示最长的接龙数列的数字个数
	int dp[10]={0},number=0;//dp数组用于存储对应位的最长数列长度
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		scanf("%d",&number);
		b=number%10;//b为末位数字
		while(number>=10)//a为首位数字
		{
			a=number/10;
			number/=10;
		}
		dp[b]=dp[a]+1>dp[b]?dp[a]+1:dp[b];//重点,详见文章重难点解答
		if(dp[b]>amount)
		{
			amount=dp[b];
		}
	}
	printf("%d",n-amount);
	
}

重难点解答

    *dp数组的具体用法

        具体来说,我们遍历输入的数字序列。dp[n]就是以数字n在某数字第一次作为末位数出现的接龙数列的长度。比如题目示例:11  121  22  12  2023中。以1结尾(这里的1为数字11末位的1)的长度为4(11 121 12 2023)、以2结尾(这里的2为数字22末位的2)的长度为2(22 2023)、以3结尾(这里的3为数字2023末位的3)的长度为1(2023)。而dp数组的作用即是存放他们对应数字的长度。如dp[1]存放的数字代表1第一次作为末位数出现的接龙数列长度。

*对于dp[b]=dp[a]+1>dp[b]?dp[a]+1:dp[b]的解释

        在这个表达式中,我们比较了两个值:dp[a] + 1dp[b]。其中,dp[a]+1表示将当前数字作为最后一个数字时的最长接龙序列长度加上1,即将当前数字接在前一个数字之后形成的新的接龙序列长度。而dp[b]表示当前数字作为末位数字时的已知的最长接龙序列长度。

        我们通过比较这两个值的大小,选择较大的值来更新dp数组中的值。如果dp[a] + 1大于dp[b],则说明将当前数字接在前一个数字之后形成的新的接龙序列长度更长,我们就将dp[b]更新为dp[a] + 1。否则,如果dp[a] + 1小于等于dp[b],则说明当前数字无法接在前一个数字之后形成更长的接龙序列,我们就保持dp[b]不变。

        通过这样的更新操作,我们可以逐步计算出每个数字作为末位数字时的最长接龙序列长度,从而得到最终的结果。

————(如有问题,欢迎评论区提问)————

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

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

相关文章

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑多能互补灵活性和用户低碳意愿的区域综合能源系统鲁棒优化调度》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

STM32 SDRAM知识点

1.SDRAM和SRAM的区别 SRAM不需要刷新电路即能保存它内部存储的数据。而SDRAM&#xff08;Dynamic Random Access Memory&#xff09;每隔一段时间&#xff0c;要刷新充电一次&#xff0c;否则内部的数据即会消失&#xff0c;因此SRAM具有较高的性能&#xff0c;但是SRAM也有它…

npm 操作报错记录1- uninstall 卸载失效

npm 操作报错记录1- uninstall 卸载失效 1、问题描述 安装了包 vue/cli-plugin-eslint4.5.0 vue/eslint-config-prettier9.0.0 但是没有使用 -d &#xff0c;所以想重新安装&#xff0c;就使用 uninstall 命令卸载&#xff0c;结果卸载了没反应&#xff0c;也没有报错&#xf…

一文帮助快速入门Django

文章目录 创建django项目应用app配置pycharm虚拟环境打包依赖 路由传统路由include路由分发namenamespace 视图中间件orm关系对象映射操作表数据库配置model常见字段及参数orm基本操作 cookie和sessiondemo类视图 创建django项目 指定版本安装django&#xff1a;pip install dj…

【linux】04 :linix实用操作

1.常用快捷键 ctrlc表示强制停止。linux某些程序的运行&#xff0c;如果想强制停止&#xff0c;可以使用&#xff1b;命令输入错误&#xff0c;也可以通过ctrlc,退出当前输入&#xff0c;重新输入。 ctrld表示退出登录&#xff0c;比如退出root以回到普通用户&#xff0c;或者…

C++ Qt开发:QHostInfo主机地址查询组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍如何运用QHostInfo组件实现对主机地址查询功能…

spring-cloud-openfeign 3.0.0(对应spring boot 2.4.x之前版本)之前版本feign整合ribbon请求流程

在之前写的文章配置基础上 https://blog.csdn.net/zlpzlpzyd/article/details/136060312 下图为自己整理的

UE5 UE4 开发常用工具AssetDeveTool

AssetDeveTool工具&#xff0c;支持UE5 5.0-.5.3 UE4 4.26/4.27 下载链接&#xff1a; 面包多 https://mbd.pub/o/bread/ZZubkphu 工坊&#xff1a; https://gf.bilibili.com/item/detail/1104960041 包含功能&#xff1a; 自动化批量展UV功能 快速选择功能 自动化批量减面功能…

SoraAI视频工具优先体验资格申请步骤

SoraAI视频工具优先体验资格申请 申请网址&#xff1a;OpenAI Red Teaming Network application 申请步骤&#xff1a; 填写基础信息 请使用英文根据内容填写以下内容&#xff0c;名、姓、电子邮件、居住国家、组织隶属关系(如果有)、教育水平 、学位&#xff08;哪个领域的…

02-gitlab的数据备份和恢复

一、gitlab的数据备份 关于数据备份&#xff0c;咱们就不需要多说什么了&#xff0c;主要就是方式数据意外丢失&#xff0c;导致代码上线流程及数据的损坏崩溃&#xff1b; 为了避免严重生产事故&#xff0c;进而gitlab有了数据备份与恢复的功能。 1&#xff0c;修改gitlab的配…

python淘宝网页爬虫数据保存到 csv和mysql(selenium)

数据库连接设置&#xff08;表和字段要提前在数据库中建好&#xff09; # 数据库中要插入的表 MYSQL_TABLE goods# MySQL 数据库连接配置,根据自己的本地数据库修改 db_config {host: localhost,port: 3306,user: root,password: ma*****6,database: may2024,charset: utf8mb…

MySQL 篇-快速了解事务、索引

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 事务概述 1.1 事务四大特性(ACID) 2.0 索引概述 2.1 关于 “索引一定要创建在主键上&#xff1f;” 的问题 2.2 索引操作语法 2.3 索引结构 1.0 事务概述 事务是…

【生态适配】亚信安慧AntDB数据库与OpenCloudOS、TencentOS Server五款产品完成兼容互认

日前&#xff0c;亚信安慧AntDB数据库与OpenCloudOS8、OpenCloudOS9、TencentOS Server 2、TencentOS Server 3、TencentOS Server 4五款操作系统完成兼容互认。经过严格测试&#xff0c;亚信安慧AntDB数据库与这五款操作系统兼容良好&#xff0c;整体运行稳定。 图1&#xff1…

stm32普通定时器脉冲计数(发送固定脉冲个数),控制步进电机驱动器

拨码开关设置驱动器&#xff0c;细分 方法思路&#xff1a;用通用定时器TIM2&#xff0c;1ms产生一次中断&#xff1b;在中断里做IO反转&#xff1b; 发送10个脉冲信号

签约仪式如何策划和安排流程?如何邀约媒体现场见证报道

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 签约仪式的策划和安排流程&#xff0c;以及邀约媒体现场见证报道&#xff0c;都是确保活动成功和提升影响力的关键环节。以下是一些建议&#xff1a; 签约仪式的策划和安排流程 明确目标…

patreon订阅

订阅制度&#xff1a; 创作者可以创建一个Patreon页面&#xff0c;邀请粉丝成为其“赞助者”或“粉丝”。这些粉丝可以选择每月或每个创作周期为创作者提供一定数额的资金支持&#xff0c;形成了一种订阅模式。 奖励层次&#xff1a; 创作者通常会设置不同的奖励层次&#xff…

MySQL安装使用(mac)

目录 一、下载MySQL 二、环境变量 三、启动 MySql 四、初始化密码设置 一、下载MySQL 打开 MySql 官方下载页面 我是macOS12&#xff0c;所以选择了8.0.30 下载完成之后&#xff0c;打开安装&#xff0c;一直下一步安装完成&#xff0c;在最后安装完成时&#xff0c;会弹出…

一周学会Django5 Python Web开发-Django5内置模板引擎-模板上下文变量

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计32条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

Linux系统Docker部署DbGate并结合内网穿透实现公网管理本地数据库

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-66GkyG9g7oNq7tl8 {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

Windows®、Linux® 和 UNIX® 系统都适用的远程桌面工具 OpenText ETX

Windows、Linux 和 UNIX 系统都适用的远程桌面工具 OpenText ETX 为 Windows、Linux 和 UNIX 实施精益、经济高效的虚拟化&#xff1b;提供完整的远程 Windows 可用性&#xff1b;以类似本地的性能远程工作&#xff1b;安全地保护系统和知识产权&#xff08;IP&#xff09;&am…
最新文章