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。

  • 相关阅读:
    Nginx无缝升级
    ajax form提交的问题
    Ubuntu下pecl_http的安装
    提高PHP的运行效率的方法
    php.ini中文对照
    类似 TP中 eq 标签
    PHP身份证验证程序
    mysql在php中的应用
    如何添加JavaScript到Joomla模板中去
    USACO / Controlling Companies (类似BFS)
  • 原文地址:https://www.cnblogs.com/ggggg63/p/6551434.html
Copyright © 2011-2022 走看看