首页 > 编程语言 >接龙序列(动态规划c++实现)

接龙序列(动态规划c++实现)

时间:2024-04-05 12:29:24浏览次数:21  
标签:数列 int 56 整数 A1 接龙 c++ 序列

题目


对于一个长度为 K 的整数数列:A1,A2,…,AK,我们称之为接龙数列当且仅当 Ai的首位数字恰好等于 Ai−1 的末位数字 (2≤i≤K)。
例如 12,23,35,56,61,11是接龙数列;12,23,34,56不是接龙数列,因为 56 的首位数字不等于 34 的末位数字。
所有长度为 1 的整数数列都是接龙数列。
现在给定一个长度为 N 的数列 A1,A2,…,AN,请你计算最少从中删除多少个数,可以使剩下的序列是接龙序列?


输入格式


第一行包含一个整数 N。
第二行包含 N个整数 A1,A2,…,AN。


输出格式


一个整数代表答案。


样例


输入样例:
5
11 121 22 12 2023


输出样例:
1


代码

#include<iostream>
#include<string.h>
using namespace std;
const int N = 1e5+10;
int l[N],r[N],g[11],f[N];
int n;

int getLast(int x){
    return x%10;
}

int getFirst(int x){
    string s = to_string(x);
    int first = (s[0]-'0');
    return first;
}

int main(){
    scanf("%d",&n);
    
    for(int i=1;i<=n;i++) {
        int x;
        scanf("%d",&x);
        l[i] = getFirst(x);
        r[i] = getLast(x);
    }
    int res = 0;
    for(int i=1;i<=n;i++){
        f[i] = 1;
        f[i] = max(f[i],g[l[i]]+1);
        g[r[i]] = max(g[r[i]],f[i]);
        res = max(res,f[i]);
    }
    
    printf("%d",n-res);
    
}

标签:数列,int,56,整数,A1,接龙,c++,序列
From: https://blog.csdn.net/zyang654321/article/details/137397526

相关文章

  • 【C++风云录】音频编程艺术:掌握VST、JUCE、JACK和PortAudio的技巧
    声音之旅:音频开发者指南前言音频处理是现代软件开发中不可或缺的一部分,无论是音乐制作软件、游戏开发还是通信应用都需要对音频数据进行处理。本文将介绍几种常用的音频处理库和框架,帮助开发者更好地理解和应用于实际项目中。欢迎订阅专栏:C++风云录文章目录声音之......
  • P9870 [NOIP2023] 双序列拓展 题解
    题意:称某个序列\(B=\{b_1,b_2,\cdots,b_n\}\)是另一个序列\(A=\{a_1,a_2,\cdots,a_m\}\)的拓展当且仅当存在正整数序列\(L=\{l_1,l_2,\cdots,l_m\}\),将\(a_i\)替换为\(l_i\)个\(a_i\)后得到序列\(B\)。例如,\(\{1,3,3,3,2,2,2\}\)是\(\{1,3,3,2\}\)的拓展,......
  • open c++ 自动设计阶梯轴UF_MODL_create_cyl1
    通过UF_MODL_create_cyl1自动设计阶梯轴 doubleTtotal=260; doubleL1=21.00; doubleL2=12.00; doubleL3=57.00; doubleL4=36.00; doubleL6=67.00; doubleL5=Ttotal-(L1+L2+L3+L4+L6); doubled1=55.00; doubled2=65.00; dou......
  • 给c++小白的教程3:变量
    哈喽大家好,又见面了变量可谓是c++中的一大重点,今天就来给大家讲解一下c++中的变量今天只讲c++自带的变量(不用别的头文件)定义变量用法:数据类型名称=内容输出:cout<<名称;首先是intint指整数变量,范围在-2147483648~2147483647(约21亿)之间用法:inta=23333intb=1234567......
  • C++入门之项目实战——BMI指数计算
    前言本篇阅读之前,如果是新来的,请看看作者大大前面的文章。(别问我为什么,哈哈哈)实战什么是BMI?所谓BMI,是BodyMassIndex的缩写,即身体质量指数,是国际上常用的衡量人体肥胖程度的重要标准。BMI是通过我们人体体重与身高这两个数值来获取的,可有效评判一个人的健康营养状况。我......
  • P1439 【模板】最长公共子序列
    题面:回顾下最长公共子序列:if(a[i]!=b[j])dp[i][j]=max(dp[i-1][j],dp[i][j-1]);elsedp[i][j]=dp[i-1][j-1]+1;复杂度为O(n^2)但是这题不行,数据卡到了1e5,所以应该再次观察:注意到是两个全排列,那么利用map,把第一个序列当作基准列,做等效替换:把原来的值替换成1,2,3.........
  • 最长上升子序列LIS模板
    参考链接:https://blog.csdn.net/lxt_Lucia/article/details/81206439#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<sstream>#include<string>#include<string.h>#include<iomanip>......
  • 【leetcode面试经典150题】12.O(1) 时间插入、删除和获取随机元素(C++)
    【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C++语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致)【题目描述】实现RandomizedSet 类:......
  • 【蓝桥杯选拔赛真题56】C++求位数 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编
    目录C++求位数一、题目要求1、编程实现2、输入输出二、算法分析三、程序编写四、程序说明五、运行结果六、考点分析七、推荐资料C++求位数第十四届蓝桥杯青少年创意编程大赛C++选拔赛真题一、题目要求1、编程实现给定一个正整数N(1<N<10^8),输出N为几位数2、......
  • 原创c++小游戏《扫雷但是地狱难度》1.0.1版本
    这个扫雷非常难,2500个格子,500个雷#include<bits/stdc++.h>usingnamespacestd;charm[51][51],rm[51][51];intbombs=500;//intbxy[501][501];intd[8][2]={{0,1},{0,-1},{1,1},{-1,1},{1,0},{-1,0},{-1,-1},{1,-1}};voidtancha(intx,inty){ intt=0; if(rm[x+1......