天天看點

靜态表的順序查找(BUCT-JK1602-LLP)

Problem A: 算法9-1:靜态表的順序查找

Time Limit: 1 Sec Memory Limit: 128 MB

Submit: 388 Solved: 102

[Submit][Status][Web Board]

Description

用順序表或者線性連結清單表示靜态查找表時,搜尋函數可以采用順序查找來實作。

通常順序查找的查找過程是從表中的自後一個記錄開始,逐個将記錄的關鍵字和給定的查找值進行比較,如果某個記錄的關鍵字與給定的值比較相等,則說明查找成功;否則如果直到第一個記錄,所有的關鍵字都與給定的值不相等,說明表中沒有響應的記錄,查找失敗。

其查找過程可以描述如下:

在本題中,讀入一串整數,另外給定多次查詢,判斷每一次查詢是否找到了相應的整數,如果找到則輸出整數相應的位置。

Input

輸入的第一行包含2個正整數n和k,分别表示共有n個整數和k次查詢。其中n不超過500,k同樣不超過500。

第二行包含n個用空格隔開的正整數,表示n個原始記錄。

第三行包含k個用空格隔開的正整數,表示k次查詢的目标。

Output

隻有1行,包含k個整數,分别表示每一次的查詢結果。如果在查詢中找到了對應的整數,則輸出其相應的位置,否則輸出-1。

請在每個整數後輸出一個空格,并請注意行尾輸出換行。

Sample Input

8 3

1 3 5 7 8 9 10 15

9 2 5

Sample Output

5 -1 2

#include<stdio.h>
int main(){
    int n,tmp,i,k,a[];
    while (scanf("%d %d",&n,&k)!=EOF)
    {
        for (i=;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        while (k--)
        {
            scanf("%d",&tmp);
            for (i=n-;i>=;i--)
            {
                if (tmp==a[i])
                {
                    printf("%d ",i);
                    break;
                }
            }
            if (i==-)
            {
                printf("-1 ");
            }
        }
        printf("\n");
    }
    return ;
}
           

繼續閱讀