Cuckoo for Hashing(hash)hunnuoj
11433 단어 hash
제목: 뜻은 해시가 왔다는 것이다. 구체적인 의미는 두 개의 해시표가 있고 그 다음에 이런 데이터가 있다는 것이다.
너로 하여금 이 데이터를 이 두 개의 해시 시계에 저장하게 한 다음에 중복할 수 없게 해라. 먼저 데이터를 시계 1에 저장하게 하는 것이 맞다
표1의 길이를 나머지로 하고 나머지라는 위치에 숫자가 없으면 저장하고 있으면 이 숫자를 저장하고
원래의 수를 다시 표 2에 저장하는 것도 이 방식에 따른다.그냥 왔다 갔다 차는...내 생각엔...
//사고방식: 두 개의 해시표, 하나는 순환해서 찾으면 된다...
>> 제목 링크<<
#include <stdio.h>
#include <string.h>
#include <map>
#include <iostream>
using namespace std ;
int ch[1100];
int sh[1100];
int main()
{
int n1,n2,k ;
int t = 1 ;
while(scanf("%d%d%d",&n1,&n2,&k)!=EOF)
{
if(n1 == 0&&n2==0&&k==0) break;
memset(ch,-1,sizeof(ch));
memset(sh,-1,sizeof(sh)) ;
int x ;
for(int i = 1 ; i <= k ; i++)
{
scanf("%d",&x);
while(1)
{
int s=x%n1;
if(ch[s] == -1)
{
ch[s]=x;
break;
}
else
{
int temp=ch[s];
ch[s]=x;
int tt=temp%n2;
if(sh[tt]==-1)
{
sh[tt]=temp;
break;
}
else
{
x=sh[tt];
sh[tt]=temp;
}
}
}
}
printf("Case %d:
",t);
t++;
int flag = 0 ;
for(int i = 0 ; i < n1 ; i++)
{
if(ch[i] != -1)
{
flag = 1 ;
break ;
}
}
if(flag)
{
printf("Table 1
");
for(int i = 0 ; i < n1 ; i++)
{
if(ch[i] != -1)
{
printf("%d:%d
",i,ch[i]);
}
}
}
flag = 0 ;
for(int i = 0 ; i < n2 ; i++)
{
if(sh[i] != -1)
{
flag = 1 ;
break ;
}
}
if(flag)
{
printf("Table 2
");
for(int i = 0 ; i < n2 ; i++)
{
if(sh[i] != -1)
{
printf("%d:%d
",i,sh[i]) ;
}
}
}
}
return 0 ;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
해시란 무엇입니까?해시 함수는 단순히 임의 길이의 입력 X를 고정 길이 n의 출력 h(x)에 매핑하는 함수입니다. ” The input to a hash function is called a pre-image, the message,...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.