首页 > 编程语言 >接龙数列(第十四届蓝桥杯C++B组JAVA题解 动态规划)

接龙数列(第十四届蓝桥杯C++B组JAVA题解 动态规划)

时间:2024-12-07 13:59:41浏览次数:9  
标签:JAVA 数列 int 题解 蓝桥 static 接龙 import new

对于一个长度为 KK 的整数数列:A1,A2,...,AK,我们称之为接龙数列当且仅当 Ai 的首位数字恰好等于 Ai−1 的末位数字 (2≤i≤K)。

例如 12,23,35,56,61,11是接龙数列;12,23,34,56 不是接龙数列,因为 56 的首位数字不等于 3434 的末位数字。

所有长度为 11 的整数数列都是接龙数列。

现在给定一个长度为 NN 的数列 A1,A2,...,AN,请你计算最少从中删除多少个数,可以使剩下的序列是接龙序列?

输入格式

第一行包含一个整数 NN。

第二行包含 NN 个整数 A1,A2,...,AN。

输出格式

一个整数代表答案。

数据范围

对于 20% 的数据,1≤N≤20
对于 50% 的数据,1≤N≤10000
对于 100% 的数据,1≤N≤105,1≤Ai≤109。所有 Ai 保证不包含前导 0。

输入样例:
5
11 121 22 12 2023
输出样例:
1
样例解释

删除 22,剩余 11,121,12,2023 是接龙数列。

思路:采用了背包思想,放与不放前提个数字的末位刚好与后一个数字首位相等我们可以选择放也可以选择不放,放则+1,不放则不变,当不等时只有一个选择那就是不放,由于会输入大量数据自定义了一个输入类,这是个死模板死记就行了,当数据量较大时,至少能比普通Scanner快两倍

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.Arrays;


public class Main{
    static int n;
    static int[][] dp;
    static int[] arr;
    static class Scanner{
        StreamTokenizer streamTokenizer=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
        public int nextInt() throws IOException {
            streamTokenizer.nextToken();
            return (int) streamTokenizer.nval;
        }
    }
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner();
        n = sc.nextInt();
        arr=new int[n];
        dp=new int[n+1][20];
        for (int i = 0; i < n; i++) {
            arr[i]=sc.nextInt();
        }
        for (int i = n-1; i>=0 ; i--) {
            for (int j = 0; j <=11; j++) {
                if (j==0){
                    dp[i][j]=dp[i+1][last(arr[i])+1]+1;
                    dp[i][j]=Math.max(dp[i+1][j],dp[i][j]);
                }
                if (j!=0&&j==first(arr[i])+1){
                    dp[i][j]=Math.max(dp[i+1][last(arr[i])+1]+1,dp[i][j]);
                    dp[i][j]=Math.max(dp[i+1][j],dp[i][j]);
                }
                dp[i][j]=Math.max(dp[i+1][j],dp[i][j]);
            }
        }
        System.out.println(n-dp[0][0]);
    }
    private static int first(int a){
        int b=0;
        while (a!=0){
            b=a%10;
            a/=10;
        }
        return b;
    }
    private static int last(int a){
        return a%10;
    }
}

标签:JAVA,数列,int,题解,蓝桥,static,接龙,import,new
From: https://blog.csdn.net/weixin_67289517/article/details/144309288

相关文章

  • 网上图书购物管理系统|Java|SSM|VUE| 前后端分离
    【一】可以提供远程部署安装,包扩环境【二】提供软件相关的安装包【三】如果需要提供java入门资料可咨询             【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、S......
  • 基于微信平台健身小助手小程序的设计与实现【java或python】-计算机毕业设计源码+LW文
    选题的意义与目的网络和科技的进步以及人们生活条件的提高都让微信小程序越来越平民化,深入日常生活中。我国非常强调体育以及健身,需要不断的让更多人参与到健身中,因为健身不仅可以锻炼身体,也能锻炼意志,有了健康的身体,就可以好好的努力工作,努力学习,为国家做出应有的贡献。有一......
  • 15届蓝桥杯刷题速成
    目录前言[1.回文判定](https://www.lanqiao.cn/problems/1371/learning/?page=1&first_category_id=1&name=%E5%9B%9E%E6%96%87%E5%88%A4%E5%AE%9A)代码题解2.小明的背包代码题解3.排序4.小明的彩灯5.走迷宫6.蓝桥公园[7.蓝桥王国](https://www.lanqiao.cn/problems/......
  • 网上图书购物管理系统|Java|SSM|VUE| 前后端分离
    【一】可以提供远程部署安装,包扩环境【二】提供软件相关的安装包【三】如果需要提供java入门资料可咨询             【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、S......
  • 面试题:JavaScript+ES5+
    jsthis指向看函数的调用方式,而不是他的定义时候分类构造函数==>new时候创建的对象对象的方法内部==》调用方法的对象事件处理函数==》绑定的事件箭头函数==》没有自己的this其他函数(全局的/局部的)==》匿名的就是window定时器函数==》window立即执行函数==》w......
  • 介绍一下 WebApplicationContext 思维导图 代码示例(java 架构)
    WebApplicationContext是Spring框架中的一个接口,它是ApplicationContext的扩展,专门用于Web应用程序。它提供了对Web特定功能的支持,例如解析主题(themes)、管理国际化资源、以及与Servlet容器集成等。下面是一个关于WebApplicationContext的思维导图大纲和一些代码示例。WebAp......
  • Java项目:小徐影城管理系统(java+SpringBoot+Mybaits+Vue+elementui+mysql)
    源码获取:俺的博客首页"资源"里下载! 项目介绍Springboot+vue小徐影城管理系统环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.硬件环境:windows7/8/101G内存以上;或者MacO......
  • java基础
    1,JDK和JRE有什么区别?JDK:JavaDevelopmentKit的简称,Java开发工具包,提供了Java的开发环境和运行环境。JRE:JavaRuntimeEnvironment的简称,Java运行环境,为Java的运行提供了所需环境。2,==和equals的区别是什么?1.运算符:当用于比较基本数据类型(如int、double、c......
  • 基于java ssm高校学术交流平台系统(源码+文档+运行视频+讲解视频)
     文章目录系列文章目录目的前言一、详细视频演示二、项目部分实现截图三、技术栈后端框架SSM前端框架vueSSM框架详细介绍系统测试四、代码参考源码获取目的摘要: 本文阐述基于JavaSSM框架构建的高校学术交流平台系统。该系统对促进高校学术繁荣、提升科研水平具有......
  • 基于java ssm高校学生学籍管理系统课程成绩(源码+文档+运行视频+讲解视频)
     文章目录系列文章目录目的前言一、详细视频演示二、项目部分实现截图三、技术栈后端框架SSM前端框架vueSSM框架详细介绍系统测试四、代码参考源码获取目的摘要: 本文探讨基于JavaSSM框架构建的高校学生学籍管理系统中的课程成绩管理功能。该功能在高校教学管理中......