zoukankan      html  css  js  c++  java
  • 1410. Crack

    http://acm.timus.ru/problem.aspx?space=1&num=1410

    题目倒是不难,水题DP

    就是题意理解起来有点困难,意思就是给你一段话,提取里面的单词

    单词有小写字母和大写字母(某些单词的首部)组成 其他字符均为间隔,

    而且不止一行,提取单词后,从里面选一定的单词,这些单词在原段中

    不能相邻,然后让提取后所有单词总长最大

    代码:

    #include<iostream>
    #include<stack>
    #include<cstdio>
    #include<queue>
    #include<cstring>
    #include<algorithm>
    #include<vector>
    #include<set>
    #include<map>
    #include<string>
    #include<cmath>
    
    using namespace std;
    
    typedef long long ll;
    typedef pair<int,int> pp;
    const int INF=0x3f3f3f3f;
    const int N=10003;
    int d1[N],d2[N];
    int a[N];
    char s[N*100];
    int main()
    {
        //freopen("data.in","r",stdin);
    
        int ln=0;
        char c;
        while(scanf("%c",&c)!=EOF)
        s[ln++]=c;
    
        int l=0;
        while(s[l]==' '&&l<ln)++l;
    
        int n=0;
        int k=0;
        for(int i=l;i<=ln;++i)
        {
            if((s[i]<='z'&&s[i]>='a')||(s[i]<='Z'&&s[i]>='A'))
            ++k;
            else
            {
                if(k>0)
                a[n++]=k;
                k=0;
            }
            if(i==ln) break;
        }
        memset(d1,0,sizeof(d1));
        memset(d2,0,sizeof(d2));
        d1[0]=a[0];d2[0]=0;
        for(int i=1;i<=n-1;++i)
        {
            d1[i]=a[i]+d2[i-1];
            d2[i]=max(d1[i-1],d2[i-1]);
        }
    
        cout<<max(d1[n-1],d2[n-1]);
        return 0;
    }
    
  • 相关阅读:
    vue移动端适配问题
    excel 表格数据转json格式
    常用快捷键
    微信公众号监听返回事件
    总结css常用方法
    封装axios
    初学angular项目中遇到的一些问题
    jquery项目中一些常用方法
    怎样做ie兼容性
    vue事件修饰符
  • 原文地址:https://www.cnblogs.com/liulangye/p/3346690.html
Copyright © 2011-2022 走看看