zoukankan      html  css  js  c++  java
  • 子序列

    All in All

    UVA - 10340
     
    这题是参考书上的习题3-9。附上链接,题目意思也很简单,原题就不再重复了。
    这题的解题思路需要一点灵感,直接从源串中删,需要考虑每次删哪些字符,这对于问题仅仅要求“能不能得到解”显然太复杂了。换一个角度来说,只要按照目标串的顺序完全出现了目标串的所有字符,即可以完成操作,反之则不能够完成。这样在一个循环内就可以完成程序。C++实现如下:
     
     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int p1, p2;
     6     char str1[1000000], str2[1000000];
     7     while (cin >> str2)
     8     {
     9         cin >> str1;
    10         p2 = 0;
    11         for (p1 = 0; str1[p1] != 0; p1++)
    12         {
    13             if (str2[p2] == str1[p1])
    14             {
    15                 p2++;
    16             }
    17             if (str2[p2] == 0)
    18             {
    19                 cout << "Yes
    ";
    20                 break;
    21             }
    22         }
    23         if (str1[p1] == 0)
    24             cout << "No
    ";
    25     }
    26     return 0;
    27 }

    这题还有点坑爹的地方就是数组长度要开的足够大,一开始80 1000 都RE了,估计是数组越界,但是也没想到居然要给那么大(题也不给数据范围的提示),不得不看别人AC掉的程序才知道10^7的长度能确保AC。

  • 相关阅读:
    3.4 抓取猫眼电影排行
    2.5 代理的基本原理
    第二章 爬虫基础
    1.8 爬虫框架的安装
    Python序列化
    CVE-2020-1938 Apache-Tomcat-Ajp漏洞复现
    Python定制类
    Apache Tomcat DDOS
    内网端口转发工具
    内网渗透思路简单介绍
  • 原文地址:https://www.cnblogs.com/ggggg63/p/6551434.html
Copyright © 2011-2022 走看看