描述
n個人圍成一圈,為了避免相鄰兩人身高差過大,需要調整每個人的位置。求最大身高差的最小值
輸入
第一行為n(3<=n<=100)代表人數
接下來每有n個正整數 數的區間為[1,300]代表身高(吐槽:哪來的3公尺高的)
輸出
最大身高差最小值
示例1
輸入
4輸出 說明100 150 200 250
例如150 100 200 250,此時任意兩人之間的差距不大於100
正確性自行驗證
#include
using
namespace std;
int curr_max =0;
int threshold =
1000
;int
get_shold_ahead
(int
*arr,
int idx,
int len)
//獲取當前位置和前乙個人的差值的絕對值
else
}int
check_ahead
(int curr,
int thre)
void
dfs(
int*arr,
int start,
int end,
int(
*break_search)
(int
,int))
for(
int idx=start;idx)elseif(
!break_search
(curr_max,threshold)
)//決定繼續遞迴下去
swap
(arr[idx]
,arr[start]);
}}intmain()
dfs(
&friends[0]
,0,friends.
size()
,check_ahead)
; cout << threshold
}
這道題其實並不難,不知道當時為啥就一點思路都沒有
用了函式指標,主要是個人為了複習指標相關
容器那個是試驗一下能不能當成陣列用(前幾天才剛學的c++)
騰訊筆試 n人組隊問題
某部門共有n nn個人,現在需要從所有人中選出任意數量 大於0 的人組成乙個小隊,並從中選出乙個隊長,那麼一共有多少種組隊方式?其中1 n 109 1 n 10 9 1 n 10 9,由於組隊方式的數目可能會很大,請將結果對 10 9 7 10 9 7 109 7 取餘後輸出。輸入 2 輸出 4 如...
位元組筆試 previous permutaion
輸入乙個整數n,把這個數的每一位的數拆開 個十百千位的數 組合成 另乙個數,另外組合的數算作乙個集合 找出比n小,但是集合中最 大的乙個數輸出。比如15234這個數,可以拆成12345,然後組合的數要比15234小,但是 又是集合中最大的乙個。如果不存在,輸出not found 輸入描述 十進位制整...
位元組飛書 c 筆試
a int j for j in input split if j i 0j len a 1 b while i j while a i 1 a i i i 1 while a j 1 a j j j 1 if a i a j i i 1 j j 1 elif a i 題目描述 山形陣列定義如下 一...