解题思路:

注意事项:

参考代码:

#include <iostream>

#include <deque>

using namespace std;


deque<char> result;

deque<char> deq;


/* void inIt(string s)

{

    for (char c : s)

    {

        result.push_back(c);

    }

} */

deque<char> danDiaoDeque(deque<char> deq1)

{

    deque<char> de1;

    deque<char> de2;

    for (char c : deq1)

    {

        if (de1.size() == 0)

        {

            de1.push_back(c);

        }

        else

        {

            while (de1.size() != 0 && de1.back() > c)

            {

                de2.push_back(de1.back());

                de1.pop_back();

            }

            de1.push_back(c);

            while (de2.size() != 0)

            {

                de1.push_back(de2.back());

                de2.pop_back();

            }

        }

    }

    return de1;

}

void inIt2(string s)

{

    result.clear();

    deq.clear();

    for (char c : s)

    {

        if (result.size() == 0)

        {

            result.push_back(c);

        }

        else

        {

            while (result.size() != 0 && result.back() > c)

            {

                deq.push_back(result.back());

                result.pop_back();

            }

            result.push_back(c);

            while (deq.size() != 0)

            {

                result.push_back(deq.back());

                deq.pop_back();

            }

        }

    }

}

int checkIt(string s, int l)

{

    deq.clear();

    for (int i = 0; i < l; i++)

    {

        deq.push_back(s[i]);

    }

    int a = 0, index = l;

    int b = s.size() - l + 1;


    while (b--)

    {

        if (danDiaoDeque(result) == danDiaoDeque(deq))

        {

            a++;

        }

        deq.push_back(s[index++]);

        deq.pop_front();

    }

    return a;

}


int main(int argc, char const *argv[])

{

    std::ios::sync_with_stdio(false);

    std::cin.tie(0);

    string s1, s2;

    cin >> s1;

    int n, all = 0;

    cin >> n;

    for (int i = 0; i < n; i++)

    {

        cin >> s2;

        int len = s2.size();

        inIt2(s2);

        all += checkIt(s1, len);

    }


    cout << all << endl;

    return 0;

}



点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论