码迷,mamicode.com
首页 > 其他好文 > 详细

[pat]1045 Favorite Color Stripe

时间:2018-06-17 13:33:21      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:printf   clu   its   TE   自动   iter   元素   分数   str   

1.用一个数组里面存储喜爱数字的值来区分数字是不是喜爱,以及值的大小顺序,用vector循环删除a数组中不是喜爱的元素,这里it=erase()之后it自动指向下一个元素,由于循环每次还要自增1,所以要加上it--。

2.然后就是写dp来寻找最长的序列,序列可以不是连续的,也就是并不是所有的喜爱数字都要选取。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    scanf("%d", &n);
    vector<int>p(n+1, -1);
    int m;
    int i;
    scanf("%d", &m);
    for (i = 0; i < m; i++)
    {
        int k;
        scanf("%d", &k);
        p[k] = i;
    }
    int l;
    scanf("%d", &l);
    vector<int>a(l, -1);
    for (i = 0; i < l; i++)
    {
        scanf("%d", &a[i]);
    }
    vector<int>::iterator it = a.begin();
    for (; it != a.end(); it++)
    {
        if (p[*it]<0)
        {
            it=a.erase(it);//erase()删除的用法.
            it--;
        }
    }
    vector<int>dp(a.size(), 1);
    int j;
    int ans = -1;
    for (i = 0; i < a.size(); i++)
    {
        for (j = 0; j < i; j++)
        {
            if (p[a[i]]>=p[a[j]] && dp[j]+1>dp[i])
                dp[i] = dp[j] + 1;
        }
        ans = max(ans, dp[i]);
    }
    printf("%d\n", ans);
}

 

[pat]1045 Favorite Color Stripe

标签:printf   clu   its   TE   自动   iter   元素   分数   str   

原文地址:https://www.cnblogs.com/legendcong/p/9192593.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!