• 10474 Where is the Marble?


    排序,检索;

    使用 bsearch 的 cmp 不能只返回 -1 或 1 (可能是要用差进行比较);

    # include <stdio.h>
    # include <stdlib.h>
    # include <string.h>
    
    # define N 10005
    
    int n, q, a[N], f[N];
    
    int cmp(const void *x, const void *y){return ( *(int*)x - *(int*)y );}
    
    int main()
    {
        int i, cnt, x;
            
        cnt = 0;
        while (1)
        {
            scanf("%d%d", &n, &q);
            if (!n && !q) break;
            
            ++cnt;
            printf("CASE# %d:\n", cnt);
            for (i = 0; i < n; ++i) scanf("%d", &a[i]);
            
            qsort(a, n, sizeof(a[0]), cmp);
            
            memset(f, 0, sizeof(f));
            for (i = 0; i < n; ++i) if (!f[a[i]]) f[a[i]] = i+1;
            for (i = 0; i < q; ++i)    
            {
                scanf("%d", &x);
                if (!f[x]) printf("%d not found\n", x);
                else printf("%d found at %d\n", x, f[x]);
            }
        }
        
        return 0;
    }

    使用 bsearch :

    View Code
    # include <stdio.h>
    # include <stdlib.h>
    
    # define N 10005
    
    int n, q, f[N], h[N];
    
    int cmp(const void *x, const void *y) {return *(int*)x - *(int*)y;}
    
    int main()
    {
        int i, x, *p, cnt;
            
        cnt = 0;
        while (1)
        {
            scanf("%d%d", &n, &q);
            if (!n && !q) break;
            
            ++cnt;
            printf("CASE# %d:\n", cnt);
            for (i = 0; i < n; ++i) scanf("%d", &f[i]);
            
            qsort(f, n, sizeof(f[0]), cmp);
            
            for (i = 0; i < q; ++i)
            {
                scanf("%d", &x);
                p = (int*)bsearch(&x, f, n, sizeof(f[0]), cmp);
                if (p == NULL) printf("%d not found\n", x);
                else
                {
                    while (*(--p) == x) ;
                    printf("%d found at %d\n", x, p-f+2);
                }
            }
        }
        
        return 0;
    }
  • 相关阅读:
    linux超级终端minicom的使用方法
    linux常用命令
    chmod 777 修改权限
    linux mount挂载设备(u盘,光盘,iso等 )使用说明
    logcat的调试 比较有用的几个命令
    git分支
    Debug和Release区别
    【Linux】linux常用基本命令
    Git代码仓库的建立流程
    Linux记录-JMX监控Tomcat上传到falcon
  • 原文地址:https://www.cnblogs.com/JMDWQ/p/2579051.html
Copyright © 2020-2023  润新知