蓝桥杯2023(十四届)省赛——接龙数列(DP)

接龙数列(DP)

1.接龙数列 - 蓝桥云课 (lanqiao.cn)

琢磨半天,本来是开一个三维的,dp[i][j][k] 表示 前i个,以j为首项,k为尾项的最大子集个数,但是实际上用二维即可。想求的是删除个数,我们反向操作,计算选取个数,最后用总量-选取个数=删除个数。这样就转化成了背包问题了,只不过,这个背包,装的条件,有些奇奇怪怪?

我给大家打出来dp的实际情况,如下:


AC:

cpp 复制代码
//接龙数列
#include <iostream>
using namespace std;

//反向操作,删除个数=总数-获取个数
//本题要我们求,符合该规律的最大子集元素个数
const int N=1e5+2;
int dp[10]={0};	//dp[i][j]  表示前i个,j结尾的子集,最大元素个数 这里我们进行了删维 
int a[N]={0};

int max(int a,int b)
{
	return a>b?a:b;
}

int main()
{
	int n;
	cin>>n;
	string a;	//用string处理首项和尾项更容易
	for(int i=0;i<n;i++)
	{
		cin>>a;
		int last=a.back()-'0';
		int first=a.front()-'0';
		dp[last]=max(dp[first]+1,dp[first]);
		
//		for(int j=0;j<=9;j++)	cout<<dp[j]<<" ";	用来观察的
//		cout<<endl;
	}
	
	int ans=0;
	for(int i=0;i<=9;i++)
		ans=max(ans,dp[i]);
	cout<<n-ans;
	
	return 0;
 } 
相关推荐
李佳鹏6 分钟前
96% 成功率,零标注数据:我用 PCA + Hungarian 解了这道几何题
算法
华盛AI8 分钟前
AI大模型竞品Anthropic Claude Opus 4.7深度分析
人工智能·算法
shehuiyuelaiyuehao14 分钟前
算法21,搜索插入位置
python·算法·leetcode
夏日听雨眠24 分钟前
数据结构(哈希函数)
数据结构·算法·哈希算法
昵称小白30 分钟前
栈与单调栈专题
开发语言·算法
心.c39 分钟前
RAG文档解析 - pypdf、LlamaParse、DeepDoc、SimpleDirectoryReader到底怎么选?
python·算法·ai
AI科技星40 分钟前
基于代数拓扑与等腰梯形素数对网格【乖乖数学】
人工智能·算法·决策树·机器学习·数学建模·数据挖掘·机器人
jghhh011 小时前
基于时差(TDOA)与 频差(FDOA) 的无源定位
算法
_深海凉_1 小时前
LeetCode热题100-回文链表
算法·leetcode·链表
pursuit_csdn1 小时前
力扣周赛 501
算法·leetcode·职场和发展