hdu 1711 Number Sequence (kmp)
2016-05-05 16:29
549 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1711
kmp模板
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
using namespace std;
typedef long long LL;
#define N 1100000
#define INF 0x3f3f3f3f
#define met(a, b) memset (a, b, sizeof(a))
int n, m, a
, b
, Next
;
void Get_Next ()
{
int i = 0, j = -1;
Next[i] = j;
while (i<m)
{
if (j==-1 || b[i]==b[j])
Next[++i] = ++j;
else j = Next[j];
}
return;
}
int kmp ()
{
int i = 0, j = 0;
Get_Next ();
while (i<n && j<m)
{
if (j==-1 || a[i]==b[j])
i++, j++;
else j = Next[j];
if (j==m) return i-m+1;
}
return -1;
}
int main ()
{
int t;
scanf ("%d", &t);
while (t--)
{
scanf ("%d %d", &n, &m);
for (int i=0; i<n; i++)
scanf ("%d", &a[i]);
for (int i=0; i<m; i++)
scanf ("%d", &b[i]);
printf ("%d\n", kmp());
}
}
kmp模板
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
using namespace std;
typedef long long LL;
#define N 1100000
#define INF 0x3f3f3f3f
#define met(a, b) memset (a, b, sizeof(a))
int n, m, a
, b
, Next
;
void Get_Next ()
{
int i = 0, j = -1;
Next[i] = j;
while (i<m)
{
if (j==-1 || b[i]==b[j])
Next[++i] = ++j;
else j = Next[j];
}
return;
}
int kmp ()
{
int i = 0, j = 0;
Get_Next ();
while (i<n && j<m)
{
if (j==-1 || a[i]==b[j])
i++, j++;
else j = Next[j];
if (j==m) return i-m+1;
}
return -1;
}
int main ()
{
int t;
scanf ("%d", &t);
while (t--)
{
scanf ("%d %d", &n, &m);
for (int i=0; i<n; i++)
scanf ("%d", &a[i]);
for (int i=0; i<m; i++)
scanf ("%d", &b[i]);
printf ("%d\n", kmp());
}
}
相关文章推荐
- UICollectionView
- resourcemanager UI界面无法访问报错KeeperErrorCode = ConnectionLoss for /rmstore
- iOS UISearchBar改变搜索框的颜色
- 第一次记录问题, 集成环信easeui库的地图问题
- (译+原)std::shared_ptr及std::unique_ptr使用数组
- UIImage获取灰度图像
- 怎样使用UGUI
- IO学习(十一)利用字节数组流实现文件拷贝,QuesRemain
- UILabe详解 for ios
- NUI控件扩展
- Android Studio里面的Build.gradle的详细配置说明
- The currently displayed page contains invalid values
- ionic build ios 没有任何输出和响应
- easyui-DataGrid基本用法
- 因为锁等待导致的慢查询不会改变状态变量slow_queries值
- UITableViewStyleGrouped的间距问题
- 层和UIView的区别是什么?
- Electron实战:创建ELectron开发的window应用安装包
- C#中跨线程操作控件 --- InvokeRequired 属性 与Invoke方法
- .NoHostAvailableException: All host(s) tried for query failed (no host was tried)