某天,乙隻可愛的小兔砸在路上蹦蹦跳跳地走著,怪人pm6出現了,於是小兔子被盯上了。
pm6:「免子。哦不,小兔子。你長得真好…不對,真可愛。我這裡有一道很容易很容易的題目,答對了我就請你吃蘿蔔,答錯了你就請我吃兔肉,好不好呀~~?」
小兔砸:「蘿蔔!?好呀好呀好呀。」於是笨笨的兔紙入套了。
pm6:「我這裡有乙個由 n 個數組成的序列,給你 m 個詢問,每個詢問會給你乙個數 x ,對於每個詢問,你要回答出序列中與這個值最接近的元素。」
聽完題後,兔子嚇成一坨免子了,面臨著變成紅燒兔頭的危險,求求你救救兔子!
第一行包含乙個整數n,為序列長度。第二行包含n個整數,為序列各元素。
第三行包含乙個整數m,為pm6的詢問個數。
接下來m行,每行乙個整數x,為要詢問最接近元素的給定值。
對於40%的資料:1<=n<=10000,1<=m<=1000
對於另外10%的資料:m=1
對於100%的資料:1 <=n<= 100000,1<=m<=10000,0<=序列中的每個數,x<=1e9
m行,每行有乙個整數,為最接近相應給定值的元素值,保持輸入順序。若有多個值滿足條件,輸出最小的乙個。示例1
複製
5複製2 4 5 5 732
56
255
#include #include #include #include #include #include using namespace std;
int main()
sort(a+1,a+n+1);
cin>>m;
while(m--)
else if(a[mid]else if(a[mid]==q)
}if(flag)
continue;
if(a[l]-qprintf("%d\n",a[l]);
else
printf("%d\n",a[r]);
}}
二分查詢數
二分搜尋,也稱折半搜尋 二分查詢,是用來在乙個有序陣列中查詢某一元素的演算法。以在乙個公升序陣列中查詢乙個數為例。它每次考察陣列當前部分的中間元素,如果中間元素剛好是要找的,就結束搜尋過程 如果中間元素小於所查詢的值,那麼左側的只會更小,不會有所查詢的元素,只需要到右側去找就好了 如果中間元素大於所...
找數字 遞迴,二分查詢
題目 在一從大到小排序的序列中用遞迴找乙個數在不在這序列,在輸出yes,不在輸出no 這題用了二分查詢的遞迴實現 思路 把陣列和變數都變成全域性變數方便遞迴函式修改 然後如果不可能就跳出迴圈 如果可能但現在沒找到就縮小範圍進入下乙個遞迴過程 如果找到了就輸出 includeusing namespa...
二分查詢(陣列裡查詢某個元素)
二分查詢 折半查詢 陣列元素有序 陣列的元素必須有順序,從小到大或者從大到小。1 定義乙個有序的陣列 max 10000 陣列最大值 number 1 陣列開始值 arr 陣列 while number max 1 二分查詢 arr 陣列 low陣列key最小值 high 陣列key最大 搜尋 k ...