最长单调递增子序列问题:
对每一个数进行访问,不断 向前搜索,搜索前面的序列有多少个数,一直搜索到第一个数记录下最长的那个序列。
时间复杂度较高,可以优化成n*logn,我们在这次练习种先用n*n的
再者就是学习了整形和字符型的转换
int a = 100;
string str = to_string(a);
str.size()字符串长度
int b = stoi(str);
#include <iostream>
#include <string>
using namespace std;
bool pd(int a,int b)
{
string s1=to_string(a);
string s2=to_string(b);
if(s1[s1.size()-1]==s2[0])
return true;
else
return false;
}
int main()
{
int n;
cin>>n;
int a[n];
int b[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
b[0]=1;
for(int i=1;i<n;i++)
{
b[i]=0;
}
for(int i=0;i<n;i++)
{
for(int j=i-1;j>=0;j--)
{
if(pd(a[j],a[i])&&b[i]<=b[j])
{
b[i]=b[j]+1;
}
}
}
int max=0;
for(int i=0;i<n;i++)
{
if(max<b[i])
max=b[i];
}
cout<<n-max;
return 0;
}