面試記錄 0 平均分割線段

2022-07-15 20:27:13 字數 2191 閱讀 5739

記一次之前乙個遊戲大廠引擎組的面試,由於面試時間有限沒有答完這個題,在此做乙個記錄。

題目:給出多個 (x, y) 點組成的相連的線段(點的順序決定連線順序),以及乙個數字 n。返回一組 (x,y)將之前的相連線段平均分成 n 份長度相等的線段。

思路:(1)將所有的點集合所得到的匯流排段長度算出來。為了方便稱呼叫輸入的點組成的線叫原線。

(2)將總長度平分 n 份後算出每段平分的長度。

//

neteaseenginesecondinterview.cpp : this file contains the 'main' function. program execution begins and ends there.

//#include

#include

#include

#define pi 3.1415926

using

namespace

std;

struct

point ;

float calculatesegmentlength(point& p1, point&p2)

//利用三角函式算出新的點

//p1, p2: 原線上兩點

//segmentlen: 原先線段上兩點

//targetlen: 新線段需要達到的長度

point createnewpoint(point& p1, point& p2, float

targetlen) ;

return

result;

}vector

segmentspliter(vector& input, int

n)

//平分長度

float newsegmentlength = length /n;

cout

<< "

new segment length =

"<< newsegmentlength <

int originsegmentindex = 0; //

原線段int originpointindex = 0; //

原線上點的索引

//使用 n-1 個點分割原線至 n 等分

while (result.size() < n - 1

) point newpoint = createnewpoint(input[originpointindex], input[originpointindex + 1

], nextsegmentlength);

result.push_back(newpoint);

//這裡進製原線點索引,因為下一次終點索引是這個指標開始的

originpointindex++;

}//若之前的新生成點集不為空的話,則以最後乙個新生成的點索引作為起點

else

point newpoint =createnewpoint(start, end, remainlength);

result.push_back(newpoint);}}

return

result;

}int

main()

; point p2 = ;

point p3 = ;

point p4 = ;

vector

test1;

point p5 = ;

point p6 = ;

point p7 = ;

point p8 = ;

point p9 = ;

vector

test2;

vector

ans1 =segmentspliter(test1, n);

for(point p : ans1)

vector

ans2 =segmentspliter(test2, n);

for(point p : ans2)

return0;

}

由於第乙個 testcase 比較簡單,我又加了乙個 testcase2。通過 debug 模式證明是對的。

執行結果如下:

歡迎各位提供新的 testcase 或提供更好的解法,不勝感激。

平均分配演算法

平均分配有2種情況 1 都沒有記錄的時候,平均分配。若11個元素,4個cpu,則分配數量為 2,3,3,3 每次分配的起點終點表示區間為 list seqno taskcounters,list seqno 1 taskcounters 11個數,平均分給4個cpu header content t...

關於遞推平均分幾塊問題

幾和遞推 平均分幾塊問題中一般 二維的一般公式是 an 2 bn c,三維的一般公式是 an 3 bn 2 cn d.知道這個做均分問題特別快比如 適用於以下情況 1 n條直線最多分平面問題 題目大致如 n條直線,最多可以把平面分為多少個區域。析 可能你以前就見過這題目,這充其量是一道初中的思考題。...

Android 使得元件平均分布

在布局內使用如下 android layout weight 1 layout weight表示view分配到的額外的布局空間,可正可負。布局的時候,系統先按照view的layout width和layout height來布局,然後再根據layout weight對view的位置進行調整。參考01...