POJ 1200 Crazy Search(RK)

题意

给定一个由NC个字母组成的字符串,求长度为N的不同子串的个数

思路:

由于只有NC个字母,可以将字母编号,0 ~ NC - 1,转换成数字,就可以将字符串表示成NC进制的数字,这样所有字串代表的数字都是唯一的,转换成10进制的数也是唯一的!

就像10的二进制表示只有1010

例如 

3 4
daababac
d = 3
a = 0
b = 1
c = 2
daa = 3 * 4 ^ 2 + 0 * 4 ^ 1 + 0 * 4 ^ 0 = 48
//vs1.0
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 16000000char str[MAX];
bool hash[MAX];
int ancii[128];int main() {int N, NC;while (scanf("%d%d%s", &N, &NC, str) != EOF) {memset(hash, true, sizeof(hash));memset(ancii, 0, sizeof(ancii));int cnt = 0;for (char *s=str; *s; ++s) {if (!ancii[*s]) {ancii[*s] = ++cnt;if (NC == cnt) break;}}int sum;int ans = 0;int len = strlen(str) - N + 1;for (int i=0; i<len; ++i) {sum = 0;for (int j=0; j<N; ++j) sum = sum * NC + (ancii[str[i+j]] - 1);if (hash[sum]) {++ans;hash[sum] = false;}}printf ("%d\n", ans);}return 0;
}//vs2.0
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 16000000char str[MAX];
bool hash[MAX];
int ancii[128];int main() {int N, NC;while (scanf("%d%d%s", &N, &NC, str) != EOF) {memset(hash, true, sizeof(hash));memset(ancii, 0, sizeof(ancii));int cnt = 0;for (char *s=str; *s; ++s) {if (!ancii[*s]) {ancii[*s] = ++cnt;if (NC == cnt) break;}}int sum = 0;int tmp = 1;for (int i=0; i<N; ++i) {tmp *= NC;sum = sum * NC + ancii[str[i]] - 1; }tmp /= NC;hash[sum] = false;int ans = 1;int len = strlen(str);for (int i=N; i<len; ++i) {sum = (sum - tmp * (ancii[str[i-N]]-1)) * NC + ancii[str[i]] - 1;if (hash[sum]) {++ans;hash[sum] = false;}}printf ("%d\n", ans);}return 0;
}

 


转载于:https://www.cnblogs.com/try86/archive/2012/07/24/2605851.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461846.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++离航篇——内存的申请释放

1、内存的申请和释放 使用关键字new&#xff0c;紧接申请的类型&#xff0c;以及用中括号标明申请多大的内存空间。 2、内存的初始化 注意和块内存申请不同&#xff0c;初始化是&#xff08;&#xff09;&#xff0c;块内存是[ ]。

去掉ExpandableListView的箭头图标

用到ExpandableListView时有个箭头图标系统自带的在你自定义布局也不能去掉只要设置一个属性即可&#xff0c;如下&#xff1a; settingLists.setGroupIndicator(null); ~~~~~~~~~~~~~~~~~此处就是设置自定义的箭头图标的。置空则没有了。 也可以自定义&#xff08;但是位置还…

C++远征之封装篇——类和封装、实例化和对象成员访问

一、封装篇的学习内容数据成员 成员函数构造函数 析构函数对象复制 对象赋值对象数组 对象指针this指针二、类与封装三、实例化和对象成员访问&#xff08;1&#xff09;从栈中实例化对象&#xff08;2&#xff09;从堆中实例化对象 &#xff08;3&#xff09;对象成员的访…

[原创]Enterprise Architecture V7.5 C++代码生成时,头文件中函数声明没有注释,CPP中函数定义却有注释。...

这几天一直在用Enterprise Architecture来抽象项目中要用到的一些数据结构和类&#xff0c;然后都做得差不多了之后发现&#xff0c;生成代码的时候.h文件中类成员函数部分没有注释&#xff0c;但是.cpp文件中的函数定义块却有注释&#xff0c;我觉得重点应该是要在头文件的成员…

ios之mknetworkkit笔记

asi没法用了&#xff0c;蛋疼了&#xff0c;在af和mk之间纠结&#xff0c;感觉af不适合我的口味&#xff0c;解析和网络耦合相对似乎重了点 mk似乎默认的不支持下载的断点续传&#xff0c;这里参考网上的代码处理了下&#xff0c;0修改mk的库&#xff0c;下面是实现的代码 // /…

C++远征之封装篇——字符串类型

一、c中的字符串操作函数 二、字符串类型string 1、c中没有字符串类型&#xff0c;只有字符类型 因此对于字符串的操作&#xff0c;一般是用上面的函数来操作。 2、字符串的初始化 3、字符串相关的操作

无需格式转换直接发布DWG图纸到Autodesk Infrastructure Map Server(AIMS) 2013

无需格式转换直接发布DWG图纸到AIMS供Web用户浏览估计是AIMS2013里最激动人心的新功能了&#xff0c;看一下这个视频吧。 英文版&#xff1a; http://docs.autodesk.com/MAP/2013/ENU/map_videos_new_features/Publishing%20DWG%20files.html 中文版&#xff1a; http://docs.a…

分词相关技术(转载)

最近在做问答系统&#xff0c;自己在园子里面找了下资料&#xff0c;觉得不错&#xff0c;自己是菜鸟原创不行&#xff0c;废话不多说了&#xff0c;送上资料。 第一个是关于Lucene的分词技术 这里可以下载PDF看&#xff0c;Lucene 原理与代码分析完整版 目录如下&#xff1a;…

C++远航之封装篇——数据的封装

以对象为中心&#xff0c;具体来说&#xff0c;以谁做什么来代表程序的逻辑。所有操作都通过调用自己的函数来完成。 数据成员暴露了&#xff0c;不好的设计&#xff1a; 数据的封装&#xff1a;

游戏大厅 从基础开始(7)--绕回来细说聊天室(中间偏下)之女仆编年史2

老少爷们儿反击战 上一篇中 我们的女仆终于可以做一些像阳光下其他人一样的事情了&#xff0c;少爷们可以和女仆酱一起参加下午茶~ 难得的上流社会啊 这是永远1v1被人私有的女奴 和 喝茶时被人共有的女仆酱最明显的差异~ 明媚的午后阳光下&#xff0c;庭院里白色长餐桌两旁&am…

【转载】App.config/Web.config 中特殊字符的处理

写一个网站&#xff0c;遇到一个问题&#xff0c;发布以后&#xff0c;提示错误&#xff0c;但是即使打开错误提示&#xff08;在web.config中打开&#xff09;&#xff0c;还是只提示错误&#xff0c;没提示什么地方错误&#xff0c;这让我知道了&#xff1a;是webconfig本身的…

Windows 8 C++/CX字符串

在C/CX里面是使用Platform::String类来表示字符串的类型&#xff0c;在windows运行时的接口和方法中&#xff0c;需要使用Platform::String来作为字符串参数的传递。如果需要使用标准C的字符串类型如wstring或者string的时候&#xff0c;可以将Platform::String与标准的C的字符…

C++远航之封装篇——类外定义和::

1、类内定义是把函数的具体实现写在类内部&#xff0c;默认是inline函数。 2、类外定义包含两种情况&#xff1a; &#xff08;1&#xff09;同文件类外定义 &#xff08;2&#xff09;不同文件类外定义

pipeline代码自动生成

如图所示&#xff0c;安装完插件后&#xff0c;Sample Step里就有相应的选项&#xff0c;选择某个选项后&#xff0c;点击Generate Pipeline Script按钮&#xff0c;就可以自动生成代码片段&#xff0c;然后放入pipeline流水线里就可以了 pipeline使用的是groovy脚本&#xff0…

一个简单的基于socket的通讯处理程序

2019独角兽企业重金招聘Python工程师标准>>> 这几天看书看得java网络编程&#xff0c;看到一个不错的&#xff0c;适合新手的&#xff0c;部分代码借鉴书上的&#xff0c;可能有地方还不是很成熟&#xff0c;不过可以借鉴一下&#xff0c;分为客户端和服务端&#x…

OncePerRequestFilter的作用

在Spring中&#xff0c;filter默认继承OncePerRequestFilter&#xff0c; OncePerRequestFilter源代码如下&#xff1a; /** Copyright 2002-2008 the original author or authors.** Licensed under the Apache License, Version 2.0 (the "License");* you may not…

C++远航之封装篇——构造函数

1、为什么需要构造函数&#xff1f; 见博客http://blog.csdn.net/zhhymh/article/details/6236317 2、c中的内存分区 &#xff08;1&#xff09;栈区 int x0&#xff1b;int *pNULL&#xff1b; &#xff08;2&#xff09;堆区 int *p new int[20]; &#xff08;3&#xff0…

Vim基本操作总结

本文是学习Vim时的笔记总结&#xff0c;以便在遗忘时方便查找相关命令&#xff0c;原学习视频链接&#xff1a;https://www.imooc.com/learn/1129 1.1 Vim的4种模式 1.normal模式&#xff1a;使用i/a/o以及I/A/O进入插入模式&#xff0c;其中各快捷键的含义如下&#xff1a; i …

ASP.NET MVC3 中的AJAX

示例演示一个链接&#xff0c;点击后利用Ajax更新特定id的标签中的内容 首先在_Layout.cshtml中加入js <script src"Url.Content("~/Scripts/jquery-1.5.1.min.js")" type"text/javascript"></script> <script src"Url.Cont…

如何判断注册用户是否已经存在(membership验证)

如何判断注册用户是否已经存在&#xff08;membership验证&#xff09; MembershipCreateStatus iStatus; Membership.CreateUser(username, password, email, question, answer, true, out iStatus); ErrirMsgText.Visible true; switch (iStatus) …