第一次只直接枚举写的,效率比较低。由于知道网上一定有更好的方法,所以去参考了别人的代码。所以第二次是用hash写的。
CODE:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
const int maxn = 1001;
int a[1001];
int search(int *a, int n, int v)
{
int tot = 0;
for(int i = 0 ; i < n; i++)
{
if(a[i] == v) tot++;
}
return tot;
}
int main()
{
int n;
while(~scanf("%d", &n), n)
{
int i, j, v;
memset(a, 0, sizeof(a));
for(i = 0 ; i < n ; i++) scanf("%d", &a[i]);
scanf("%d", &v);
int t = search(a, n, v);
printf("%d\n", t);
}
return 0;
}
#include <stdlib.h>
#include <string.h>
using namespace std;
const int maxn = 1001;
int a[1001];
int search(int *a, int n, int v)
{
int tot = 0;
for(int i = 0 ; i < n; i++)
{
if(a[i] == v) tot++;
}
return tot;
}
int main()
{
int n;
while(~scanf("%d", &n), n)
{
int i, j, v;
memset(a, 0, sizeof(a));
for(i = 0 ; i < n ; i++) scanf("%d", &a[i]);
scanf("%d", &v);
int t = search(a, n, v);
printf("%d\n", t);
}
return 0;
}
这次用的hash
CODE:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
const int maxn = 101;
int hash[maxn];
int main()
{
int N;
int n;
while(~scanf("%d", &N), N)
{
int i;
memset(hash, 0, sizeof(hash));
for(i = 0; i < N ; i++)
{
scanf("%d", &n);
++hash[n];
}
scanf("%d", &n);
printf("%d\n", hash[n]);
}
return 0;
#include <stdlib.h>
#include <string.h>
using namespace std;
const int maxn = 101;
int hash[maxn];
int main()
{
int N;
int n;
while(~scanf("%d", &N), N)
{
int i;
memset(hash, 0, sizeof(hash));
for(i = 0; i < N ; i++)
{
scanf("%d", &n);
++hash[n];
}
scanf("%d", &n);
printf("%d\n", hash[n]);
}
return 0;
}