第一次只直接枚举写的,效率比较低。由于知道网上一定有更好的方法,所以去参考了别人的代码。所以第二次是用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, 0sizeof(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, 0sizeof(hash));
        for(i = 0; i < N ; i++)
        {
            scanf("%d", &n);
            ++hash[n];
        }
        scanf("%d", &n);
        printf("%d\n", hash[n]);
    }
    return 0;

} 

 

posted on 2012-07-20 17:11  有间博客  阅读(130)  评论(0编辑  收藏  举报