查詢專題 River Hopscotch

2021-10-23 18:36:18 字數 1074 閱讀 1336

題目大意:河流的起點終點各有一塊石頭,然後這兩個石頭中間又有n塊石頭,問去點m塊石頭後最大的最小距離是多少。(即存在一種去除m塊石頭的方法,使在該情況下所有石頭間的最小距離,在所有的去除m塊石頭的情況下的最小石頭間距中最小)

題目解法:這個題我是通過二分法來求解的,通過對總長l進行二分,然後判斷mid(將距離小於mid的左側石頭全部去掉,最後判斷剩下的石頭是否比目標多),判斷後再更新left或者right,因為這裡全部是整數,所以直+1/-1就可以了。

這個題目的關鍵在於,當判斷mid時剩下的石頭符合條件時,還要繼續運算,因為要找最大值,所以又引入了乙個變數result,用來儲存結果,如果在mid情況下剩下的石頭要大於等於目標值,則令結果等於mid,left=mid+1(這裡要大於等於的目標是為了求最大的最小值)。

**部分

#include

#include

int l,m,n;

int distance[

5000];

intjudge

(int mid)

}return sum>=n-m;

}int

compare

(const

void

* a,

const

void

* b)

intmain()

qosrt

(distance,n,

sizeof

(distance[0]

),compare)

;int left=

0,right=l,result=

0,mid=0;

while

(left>=right)

else

}printf

("%d\n"

,result)

;return0;

}

其實二分麻煩的地方就是迴圈條件的判斷以及迭代式子的書寫,大體寫出來,然後再自己調整就可以了。

努力努力再努力x

leetcode演算法專題訓練 七 查詢專題

33.搜尋旋轉排序陣列題目描述 公升序排列的整數陣列 nums 在預先未知的某個點上進行了旋轉 例如,0,1,2,4,5,6,7 經旋轉後可能變為 4,5,6,7,0,1,2 請你在陣列中搜尋 target 如果陣列中存在這個目標值,則返回它的索引,否則返回 1 每乙個數都是獨一無二的。解題思路 二...

成績查詢 結構體專題

有一學生成績表,包括學號 姓名 3門課程成績。請實現如下查詢功能 輸入乙個學生的學號,輸出該學生學號 姓名 3門課程成績 首先輸入乙個整數n 1 n 100 表示學生人數 然後輸入n行,每行包含乙個學生的資訊 學號 12位 姓名 不含空格且不超過20位 以及3個整數,表示3門課成績,資料之間用空格隔...

BUPT複試專題 樹查詢 2011

有一棵樹,輸出某一深度的所有節點,有則輸出這些節點,無則輸出empty。該樹是完全二叉樹。輸入有多組資料。每組輸入乙個n 1 n 1000 然後將樹中的這n個節點依次輸入,再輸入乙個d代表深度。輸出該樹中第d層得所有節點,節點間用空格隔開,最後乙個節點後沒有空格。示例1 4 1 2 3 4 2 2 ...