| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 23168 | Accepted: 6513 |
Description
Your task is to write a program that given the size, N, of the substring, the number of different characters that may occur in the text, NC, and the text itself, determines the number of different substrings of size N that appear in the text.
As an example, consider N=3, NC=4 and the text "daababac". The different substrings of size 3 that can be found in this text are: "daa"; "aab"; "aba"; "bab"; "bac". Therefore, the answer should be 5.
Input
Output
Sample Input
3 4 daababac
Sample Output
5
Hint
Source
题意:输入n,m,和字符窜,给你字符串出现字母的种数(m),问你长度为n的字符串有多少种?
hash,看代码吧
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
#define N 16000005
char a[N];
int n,m;
int ha[N];
int main()
{
int i,j;
while(~scanf("%d%d",&n,&m))
{
scanf("%s",a);
i=0;
memset(ha,0,sizeof(ha));
int len=strlen(a);
for(j=0;j<len;j++)
{
if(!ha[a[j]])
{
ha[a[j]]=++i;
if(i==m)
break;
}
}
int ans=0;
for(i=0;i+n<=len;i++)
{
int temp=0;
for(j=i;j<i+n;j++)
{
temp=temp*m+ha[a[j]];
}
if(!ha[temp])
{
ans++;
ha[temp]=1;
}
}
printf("%d\n",ans);
return 0;
}
return 0;
}
391



被折叠的 条评论
为什么被折叠?



