zoukankan      html  css  js  c++  java
  • Sicily 1282. Computer Game

    题目地址:1282. Computer Game

    思路:

         KMP算法,网上有很多资料,参考了一些网上的解题,收获很大,很感谢那些大神们!!!

         通过这道题简单说说我对KMP算法的理解吧(大神们勿喷,虽然没人看我的orz~~~~囧)。

         首先输入的是要匹配的字符串,如果这个字符串的首字母在整个字符串不重复出现的话,直接一直匹配下去即可。

         诶,那重复出现了怎么办,那就从最后一个重复出现的重新开始匹配,那么这就找到优化算法的好方法了,KMP算法的精髓大致是这样的。

         这道题具体代码如下:

     1 #include <iostream>
     2 #include <cstdio>
     3 using namespace std;
     4 
     5 int main() {
     6     int len1, len2;
     7     while (cin >> len1) {
     8         int code[60001] = {0}; 
     9         int next[60001] = {0};
    10         for (int i = 1; i <= len1; i++) {
    11             scanf("%d", &code[i]);
    12         }
    13         int index = 0;
    14         for (int i = 2; i <= len1; i++) {
    15             index = code[index+1] == code[i] ? index+1 : 0;
    16             next[i] = index;
    17         }
    18         cin >> len2;
    19         index = 0;
    20         int test, result;
    21         for (int i = 1; i <= len2; i++) {
    22             scanf("%d", &test);
    23             if (index != len1) {
    24                 index = code[index+1] == test ? index+1 : next[index];
    25                 if (index == len1) {
    26                     result = i-len1;
    27                 }
    28             }
    29         }
    30         index == len1 ? cout << result << endl : cout << "no solution
    ";
    31     }
    32     
    33     return 0;
    34 } 
  • 相关阅读:
    java实现第六届蓝桥杯立方体自身
    Java实现第八届蓝桥杯包子凑数
    Snapshot Standby
    [NOI2014]购票
    DG的数据保护模式
    严格次小生成树
    Java实现第八届蓝桥杯拉马车
    Java实现第八届蓝桥杯拉马车
    Java实现第八届蓝桥杯迷宫
    在物理 Data Guard 中对异构主备系统的支持 (文档 ID 1602437.1)
  • 原文地址:https://www.cnblogs.com/winray/p/4098059.html
Copyright © 2011-2022 走看看