poj 3007
来源:互联网 发布:java 获取对象的大小 编辑:程序博客网 时间:2024/06/06 07:51
一开始用set存字符串超时了
后来用hash判重 用set存
懒得写函数了
应该有8重
hash=hash*key+xx;
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<set>using namespace std;int main(){int t;scanf("%d",&t);while(t--){string s;cin>>s;set<long long>p;long long hash=1;int len=s.size();for(int i=0;i<len;i++)hash=(hash*29+s[i]-'a'+1);p.insert(hash);for(int i=1;i<len;i++){hash=1;for(int j=i;j<len;j++)hash=(hash*29+s[j]-'a'+1);for(int j=0;j<i;j++)hash=(hash*29+s[j]-'a'+1);p.insert(hash); hash=1;for(int j=i-1;j>=0;j--)hash=(hash*29+s[j]-'a'+1);for(int j=i;j<len;j++)hash=(hash*29+s[j]-'a'+1);p.insert(hash); hash=1;for(int j=i;j<len;j++)hash=(hash*29+s[j]-'a'+1);for(int j=i-1;j>=0;j--)hash=(hash*29+s[j]-'a'+1);p.insert(hash); hash=1;for(int j=len-1;j>=i;j--)hash=(hash*29+s[j]-'a'+1);for(int j=0;j<i;j++)hash=(hash*29+s[j]-'a'+1);p.insert(hash); hash=1;for(int j=0;j<i;j++)hash=(hash*29+s[j]-'a'+1);for(int j=len-1;j>=i;j--)hash=(hash*29+s[j]-'a'+1);p.insert(hash); hash=1;for(int j=i-1;j>=0;j--)hash=(hash*29+s[j]-'a'+1);for(int j=len-1;j>=i;j--)hash=(hash*29+s[j]-'a'+1);p.insert(hash); hash=1;for(int j=len-1;j>=i;j--)hash=(hash*29+s[j]-'a'+1);for(int j=i-1;j>=0;j--)hash=(hash*29+s[j]-'a'+1);p.insert(hash); hash=1;}printf("%d\n",p.size());} }
阅读全文
0 0
- poj-3007
- POJ 3007
- poj 3007
- POJ 3007 hash表
- poj 3007 哈希
- POJ 3007(字符串hash)
- poj 3007 stl
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- POJ
- Java多线程(二)认识Java里面的Thread
- PAT 1031 查验身份证
- 我们为什么要做一名系统管理员?
- C语言入门第七篇,强制类型转换和ASCll编码
- Redis使用简明教程
- poj 3007
- 二叉树:已知前序&&中序或中序&&后序构造树
- Codeforces Round #387 (Div. 2) A. Display Size
- HDU 2544 最短路
- 浅谈HTML中的行块标签
- java每日一练
- Overfitting
- HIVE学习笔记
- JVM调优 基于分代策略