hash表的应用HDU4886
2014-10-04 21:41
190 查看
#include<cstdio>
#include<cstring>
const int N=2100005;
int t,mi[10];
bool hash
;
char str
;
void bui(int len)
{
int n=strlen(str);
int pre=0,s=0;
for(int i=0;i<n;i++)
{
s=s*8+str[i]-'A';
if(i-pre==len)
{
hash[s]=1;
s%=mi[len];
pre++;
}
}
}
bool find(int now,int sum,int len)
{
if(now==len)
{
if(hash[sum]) return 0;
char ans[10];
int an=0;
for(int i=0;i<len;i++)
{
ans[an++]=sum%8+'A';
sum/=8;
}
for(int i=an-1;i>=0;i--)
printf("%c",ans[i]);
printf("\n");
return 1;
}
for(int i=0;i<8;i++)
if(find(now+1,sum*8+i,len)) return 1;
return 0;
}
void build()
{
for(int i=0;i<7;i++)
{
memset(hash,0,sizeof(hash));
bui(i);
if(find(0,0,i+1)) return;
}
}
int main()
{
mi[0]=1;
for(int i=1;i<8;i++)
mi[i]=mi[i-1]*8;
scanf("%d",&t);
while(t--)
{
scanf("%s",str);
build();
}
return 0;
}
#include<cstring>
const int N=2100005;
int t,mi[10];
bool hash
;
char str
;
void bui(int len)
{
int n=strlen(str);
int pre=0,s=0;
for(int i=0;i<n;i++)
{
s=s*8+str[i]-'A';
if(i-pre==len)
{
hash[s]=1;
s%=mi[len];
pre++;
}
}
}
bool find(int now,int sum,int len)
{
if(now==len)
{
if(hash[sum]) return 0;
char ans[10];
int an=0;
for(int i=0;i<len;i++)
{
ans[an++]=sum%8+'A';
sum/=8;
}
for(int i=an-1;i>=0;i--)
printf("%c",ans[i]);
printf("\n");
return 1;
}
for(int i=0;i<8;i++)
if(find(now+1,sum*8+i,len)) return 1;
return 0;
}
void build()
{
for(int i=0;i<7;i++)
{
memset(hash,0,sizeof(hash));
bui(i);
if(find(0,0,i+1)) return;
}
}
int main()
{
mi[0]=1;
for(int i=1;i<8;i++)
mi[i]=mi[i-1]*8;
scanf("%d",&t);
while(t--)
{
scanf("%s",str);
build();
}
return 0;
}
相关文章推荐
- Hash 算法及其应用
- 对称、非对称和HASH加密的应用
- 哈希(Hash)与加密(Encrypt)的基本原理、区别及工程应用[转]
- Hash 函数的常用算法和应用领域
- Hash 算法及其应用
- 哈希(Hash)与加密(Encrypt)的基本原理、区别及工程应用
- 哈希(Hash)与加密(Encrypt)的基本原理、区别及工程应用
- 比较好的思路题还有小trik,hash的比较好的应用
- 哈希(Hash)与加密(Encrypt)的基本原理、区别及工程应用
- 对称、非对称和HASH加密的应用
- Hash 算法及其应用
- Hash的应用,这个题目可以更加理解hash所换来的效率
- Hash 算法及其应用
- 一种变进制数及其应用(全排列之Hash实现)
- 对称、非对称和HASH加密的应用
- hash数组的一个简单应用
- sql server中的hash应用优化
- Hash的应用
- Hash 算法及其应用
- hash 表在Java中的应用