Description
输入N个整数,查询这N个数字中是否含有数字X。
Input
输入包含T组测试数据。
开头是一个正整数T (0<T<10),为测试数据数量。
对于每组测试数据,第一行是一个正整数N (0<N<=10000)。
第二行是N个正整数,代表这N个元素。每个元素均在int范围内。
第三行是一个正整数Q (0<Q<=5000) 代表查询次数。接下来有Q行,每行包含一个整数X。
Output
对于每次查询,若X在这N个整数中,输出“Yes”,否则输出“No”。
Samples
input Copy
1 5 1 2 3 4 5 2 3 6
output Copy
Yes No
//可以快速想到的笨方法
#include<stdio.h>
int number[10001];
int main() {
int t,n,q;
int whatnumber;
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &number[i]);
}
scanf("%d", &q);
for (int i = 0; i < q; i++) {
scanf("%d", &whatnumber);
for (int k = 0; k < n; k++) {
if (number[k] == whatnumber) {
printf("Yes\n");
break;
}
if (k == n - 1) {
printf("No\n");
break;
}
}
}
}
return 0;
}
//利用哈希表快速查找
#include <stdio.h>
#define MAX 1000000
int hash[MAX];
int main() {
int t, n, q;
int whatnumber;
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int num;
scanf("%d", &num);
hash[num] = 1; // 将数字存入哈希表
}
scanf("%d", &q);
for (int i = 0; i < q; i++) {
scanf("%d", &whatnumber);
if (hash[whatnumber] == 1) {
printf("Yes\n");
} else {
printf("No\n");
}
}
// 重置哈希表
for (int i = 0; i < MAX; i++) {
hash[i] = 0;
}
}
return 0;
}
现在出现的问题是第一个代码可以通过oj平台,但是第二个会显示Runtime Error 这是怎么回事,应该是哪里出问题了。