zoukankan      html  css  js  c++  java
  • codevs 1051 接龙游戏

    传送门

    1051 接龙游戏

     时间限制: 1 s
     空间限制: 128000 KB
     题目等级 : 钻石 Diamond
     
    题目描述 Description

    给出了N个单词,已经按长度排好了序。如果某单词i是某单词j的前缀,i->j算一次接龙(两个相同的单词不能算接龙)。

    你的任务是:对于输入的单词,找出最长的龙。

    输入描述 Input Description

    第一行为N(1<=N<=105)。以下N行每行一个单词(由小写组成),已经按长度排序。(每个单词长度<50)

    输出描述 Output Description

    仅一个数,为最长的龙的长度。

    样例输入 Sample Input

    5

    i

    a

    int

    able

    inter

    样例输出 Sample Output

    3

    数据范围及提示 Data Size & Hint

    1<=N<=105

    【思路】

    能构成接龙就加入栈中 统计栈中的最多元素个数

    【code】

    #include<stack>
    #include<vector>
    using namespace std;
    string s;
    int n,ans;
    vector<string>str;
    stack<string>vec;
    bool pd(string a,string b)
    {
        int lena=a.size(),lenb=b.size();
        if(lena<=lenb)return 0;
        for(int i=0;i<lenb;i++)
        {
            if(a[i]!=b[i])return 0;
        }
        return 1;
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            cin>>s;
            str.push_back(s);
        }
        sort(str.begin(),str.end());
        for(int i=0;i<n;i++)
        {
            while(!vec.empty()&&!pd(str[i],vec.top()))
            vec.pop();
            vec.push(str[i]);
            if(vec.size()>ans)
            ans=vec.size();
        }
        printf("%d
    ",ans);
    }
  • 相关阅读:
    如何去重一个Oracle表
    配置Eclipse来开发Java 程序
    在windows上使用opera mini
    Oracle OLAP 介绍
    一个Batch作业调度系统构思
    how to Use Subversion with TortoiseSVN
    java official Design Pattern
    how to install ubuntu OS combined with Windows
    确保DWBI项目成功的几个关键点
    spinner 读取sqlite
  • 原文地址:https://www.cnblogs.com/zzyh/p/6963755.html
Copyright © 2011-2022 走看看