第四道题 也是一个模板题

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int  l[N],r[N],f[N],g[N];
int main() {
	int n;cin>>n;
	for(int i=0;i<n;i++){
		string str;cin>>str;//接受每个数字
		l[i]=str.front()-'0';//将输入数字的第一位 从字符转化为int型
		r[i]=str.back()-'0';//同理,将最后一位从字符转化为int型
	}
	int mx=0;//mx定义的就是最大的数列长度
	for(int i=0;i<n;i++){//这个规律画图能找出来
		f[i]=1;
		f[i]=max(f[i],g[l[i]]+1);
		g[r[i]]=max(f[i],g[r[i]]);
	}
	for(int i=0;i<n;i++)mx=max(mx,f[i]);
	cout<<n-mx;//那么删掉的最小长度,就是总长度减去数列最长长度
return 0;
}