算法笔记(十二)散列(hash)

1、题述:

给个N个正整数,再给M个正整数,问M个数中的每个数分别是否出现过?


代码:

#include <cstdio>

const int max=100010;
bool hashTable[max]={false};

int main()
{
int n,m,x;
scanf("%d%d",&n,&m);
for(int i=0; i<n; i++){
scanf("%d",&x);
hashTable[x] = true;   //出现则为true
}

for(int j=0; j<m; j++){
scanf("%d",&x);
if(hashTable[x] == true){
printf("Yes\n");
}else{
printf("No\n");
}
}
return 0;

}


前一个判断是否出现过,下面判断出现的次数,同上1代码为:

#include <cstdio>

const int max=100010;
bool hashTable[max]={0};

int main()
{
int n,m,x;
scanf("%d%d",&n,&m);
for(int i=0; i<n; i++){
scanf("%d",&x);
hashTable[x] ++;   //出现则为true
}

for(int j=0; j<m; j++){
scanf("%d",&x);
        printf("hashTable[x]");
}
return 0;
}

猜你喜欢

转载自blog.csdn.net/u014252478/article/details/80630859