欢迎使用本站,预祝练习时长两年半的选手们到成功! [本模块信息来自tem/def/head]

rhx whj 哈希作业

时间:2024-05-12 15:16 作者:admin 点击:
1458,1462 哈希:把字符串看成数字 输入一个字符串,把这个字符串的各个子串都用哈希值存储 "abcdefghijk" 123456789ab "abd" 124 "gij" 79a 进制转换 for(int i=0;is.size();i++){ //知道每个字符代表的数

1458,1462


哈希:把字符串看成数字

输入一个字符串,把这个字符串的各个子串都用哈希值存储


"abcdefghijk"

123456789ab



"abd" 124

"gij" 79a


进制转换



for(int i=0;i<s.size();i++){

   //知道每个字符代表的数字(哈希值)

}

//a,b两个字符合并在一起的哈希值  a*进制+b

                            1*10+2

//ab,c两个字符合并在一起的哈希值 ab*进制+c

//abc,a两个字符的哈希值,求bc哈希值

//abc,c两个字符的哈希值,求ab哈希值


输入一个字符串(全小写字母),把这个字符串的所有前缀哈希值求出来

再把这个字符串的所有后缀哈希值求出来

"abcde"

前缀

"a"

"ab"

"abc"

"abcd"

"abcde"

后缀

"e"

"de"

"cde"

"bcde"

"abcde"


#include <iostream>

#include <cmath>

using namespace std;

int jz=26;

long long hx[10050];//每个字符的哈希值

long long hxqz[10050];//前缀哈希值

long long hxhz[10050];//后缀哈希值

string s;

int main(){

   //cin>>s;

   s="abcdabcd";

   for(int i=0;i<s.size();i++){

       hx[i+1]=s[i]-'a'+1;

       cout<<hx[i+1]<<"\t";

   }

   cout<<endl;

   for(int i=1;i<=s.size();i++){

       hxqz[i]=hxqz[i-1]*jz+hx[i];

       cout<<hxqz[i]<<"\t";

   }

   cout<<endl;

   for(int i=1;i<=s.size();i++){

       hxhz[i]=hx[s.size()-i+1]*round(pow(jz,i-1))+hxhz[i-1];

       cout<<hxhz[i]<<"\t";

   }

   return 0;

}

(责任编辑:admin)
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%