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 ;
}