[SOJ] 1282. Computer games (KMP)
坑爹题
1282. Computer Game
Constraints
Time Limit: 1 secs, Memory Limit: 32 MB
Description
Brian is an enthusiast of computer games, especially those that simulate virtual reality. Now he is in front of the Star Gate. In order to open the gate he must break the protection as quickly as he can. Breaking the protection means to match a given code (a sequence of numbers) against the gate protection (a very long sequence of numbers). The starting position of the first occurrence of the code within the sequence opens the gate. Can you help him?
The code is a sequence of at most 60000 integer numbers between 0 and 255. The gate protection contains integer numbers between 0 and 255. Your program must find the first match if there is one, or report the absence of a match.
Input
The text input file contains several data sets. Each data set has the following format:
l the length of the code
l the sequence of numbers representing the code
l the number of integers in the gate protection
l the sequence of numbers representing the gate protection
code_dimension
integer1 integer2 … integercode_dimension
protection_dimension
integer1 integer2 … integerprotection_dimension
White spaces may occur freely in the input.
Output
The results must be printed on the standard output. For each given data set, print the result on a separate line. The result is a number that represents the position (starting from zero) of the first occurrence of the code in the gate protection, or the message no solution if there is no match.
Sample Input
3
0 1 2
7
2 3 4 0 1 2 5 2
1 4
6
4 1 4 1 4 4 3
1 2 3
7
3 2 1 3 2 255 7
Sample Output
3
1
no solution
#include<iostream>
#include<stdio.h>
using namespace std; int pat[1000000], text[1000000];
int next0[1000000]; void get_Next(int len2)
{
int k = -1;
int i = 0;
next0[0] = -1; while (i<len2)
{
if (k == -1 || pat[i] == pat[k])
{
k++;
i++;
next0[i] = k;
}
else
k = next0[k];
}
} int KMP(int len1, int len2)
{
int i = 0;
int j = 0; get_Next(len2); while ((i<len1) && (j<len2))
{
if (j == -1 || pat[j] == text[i])
{
i++;
j++;
}
else
j = next0[j];
}
if (j == len2)
return i - j;
return -1;
} int main()
{
int len2;
int len1;
while (scanf("%d", &len2) != EOF)
{
for (int i = 0; i < len2; i++)
cin >> pat[i];
cin >> len1;
for (int i = 0; i < len1; i++)
cin >> text[i]; int q = KMP(len1, len2); if (q >= 0)
cout << q << endl;
else
cout << "no solution" << endl;
} return 0;
}
[SOJ] 1282. Computer games (KMP)的更多相关文章
- Sicily 1282. Computer Game
题目地址:1282. Computer Game 思路: KMP算法,网上有很多资料,参考了一些网上的解题,收获很大,很感谢那些大神们!!! 通过这道题简单说说我对KMP算法的理解吧(大神们勿喷,虽然 ...
- 论文笔记之:Playing for Data: Ground Truth from Computer Games
Playing for Data: Ground Truth from Computer Games ECCV 2016 Project Page:http://download.visinf.tu- ...
- SOJ 1717 Computer (单机任务调度)
一.题目描述 Constraints :Time Limit: 2 secs, Memory Limit: 32 MB Description: We often hear that computer ...
- Codeforces Round #546 (Div. 2) B. Nastya Is Playing Computer Games
链接:https://codeforces.com/contest/1136/problem/B 题意: 有n个井盖,每个井盖上有一个小石头. 给出n和k,k表示刚开始在第k个井盖上方. 有三种操作, ...
- CF 1136B Nastya Is Playing Computer Games
题目链接:codeforces.com/problemset/problem/1136/B 题目分析 首先,读完题目,看了是个B题,嗯嗯...... 果断找规律,然后交了一波,居然过了!!! 代码区 ...
- Games on a CD
Games on a CD time limit per test 4 seconds memory limit per test 512 megabytes input standard input ...
- Networked Graphics: Building Networked Games and Virtual Environments (Anthony Steed / Manuel Fradinho Oliveira 著)
PART I GROUNDWORK CHAPTER 1 Introduction CHAPTER 2 One on One (101) CHAPTER 3 Overview of the Intern ...
- Codeforces Beta Round #37 B. Computer Game 暴力 贪心
B. Computer Game 题目连接: http://www.codeforces.com/contest/37/problem/B Description Vasya's elder brot ...
- Mesa (computer graphics)
http://en.wikipedia.org/wiki/Mesa_(computer_graphics) Mesa (computer graphics) From Wikipedia, the f ...
随机推荐
- 仿QQ空间视差效果,ListView.setHeader( )
根据listview的手指移动事件,动态设置listview上面的图片的宽高,并在手指放开的时候 实现图片的动画(随时间变化的动画值) ValueAnimator.ofInt ( ) import a ...
- Graph - leetcode [图]
207. Course Schedule 有向图的环检测 bool canFinish(int numCourses, vector<pair<int, int>>& ...
- openSuse快捷键
1.printscreen全屏截图 2.ctrl+printscreen窗口截图 3.shift+printscreen选择截图 4.Ctrl+Alt+up arrow.Ctrl+Alt+down a ...
- metasploit nessus & db_autopwn
nessus官网:https://www.tenable.com/products/nessus-vulnerability-scanner 下载地址:https://www.tenable.com/ ...
- MySql 使用教程(摘自网络)
一.连接 mysql 格式:mysql-h 主机地址 -u 用户名 p 用户密码 1 例 1 连接到本机上的 mysql 首先在打开 DOS 窗口,然后进入目录 mysql\bin ...
- Dojo的UI框架bootstrap for dojo和Dojo-Bootstrap简介
最近在学习Dojo,但样式问题真是头疼呀,虽然清新的淡蓝色很是减缓眼睛的疲劳,但这个扁平化简约风盛行的年代,光是清新的拟物已经满足不了群众的需求了,所以就在这样的需求下,我知道了bootstrap f ...
- DataGrid 导出数据到 Excel
Private Sub GridToExl_Click() On Error Resume Next If DataGrid1.Columns.Count = 0 Then MsgBox " ...
- Scala AOP
trait Action { def doAction } trait TBeforeAfter extends Action { abstract override def doAction { p ...
- php的redis的pconnect
1. 当使用pconnect时,连接会被重用,连接的生命周期是fpm进程的生命周期,而非一次php的执行. 2.如果代码中使用pconnect, close的作用仅是使当前php不能再进行redis请 ...
- Mac终端命令收集
一.利用命令行执行文件 cd到要执行文件的文件夹 输入python xx.py 命令即可(xx表示要执行的文件名称)