位元組筆試 N人相鄰身高差最小

2021-10-21 09:02:41 字數 1283 閱讀 3697

描述

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 題目描述 山形陣列定義如下 一...