百度工程師所研究的 一種資料分配問題

2021-08-18 18:48:43 字數 1207 閱讀 1943

問題簡單描述如下:

n為大於1的自然數,

有乙個序列, 

(嚴格一點,應該用表示序列,i為下標,上面就簡單用下標代替序列元素了)

每n個元素合為一組,稱為一「格」。劃分後形式如下:

將n^2個元素,分到n個格中,稱做一次 「分配」。

現在要求將這n格中的資料重新分配,要求:

1.一次分配,共n個格,每格n個元素,乙個元素只屬於一格(平等原則);

2.在不同的分配中,任意2個格仔之間,只允許乙個元素相同(最小相似原則);

3.對乙個n值,要完成n次分配(如果考慮最初的原始分配那就是n+1次分配);

例如 n=2 時,

序列

初始劃分為 

[[1 2] [3 4]]

2格的資料重新分配,2次分配如下:

[[1 3] [2 4]]   

[[1 4] [2 3]]

( 滿足,不同分配之間的任意2個格中的元素只允許乙個相同,

[1 3] 與 [2 3] 只有3相同。

[2 4] 與 [2 3] 只有2相同。

找到2次分配就算完成任務。) 

例如 n=3 時,

[[1 2 3] [4 5 6] [7 8 9]] 初始分配 

[[1 4 7] [2 5 8] [3 6 9]] 一次分配 

[[1 5 9] [2 6 7] [3 4 8]] 一次分配 

[[1 6 8] [2 4 9] [3 5 7]] 一次分配 

你來設計一種資料分配的機制,給定n,將初始序列,變換為n個不同的序列。

該機制,可以將資料分配到不同的網路節點上,有很大的實用價值。

。有這樣乙個規律,當n= 2 3 5 7 11 等素數時,這種分配方案很容易找。

但是,當n為合數時,就變得困難了,n=4時是有解的,但其它的合數就不知道了。

對於n為素數的分配方式**如下:

#include

using namespace std;

int main()  

}

int count=1;

cout<<"最原始的分組為:"for(int j=0;jcout<}

cout<<']'<}

for(int step=0;stepcoutcoutcout<<']'} 

}

return 0;

乙個前百度工程師看百度的狼性

戰略 在李彥巨集的那封信裡談到了移動搜尋的戰略,也談到了危機,可惜沒有文章提到過危機是怎麼產生的。記得三年前,還是2009年,還是華為的那位神童李一男做cto,我作為一名底層的在做移動搜尋的工程師有幸能和他有過大致如下的對話 最近蘋果的iphone和安卓的手機勢頭很猛,不知道公司有沒有在這方面的行動...

百度2012使用者研究工程師職位的筆試

題目一共五道,雖然我都寫了但是我剛才想起來乙個問題 不知道是不是選作 大致感覺題量挺大的 題目原話記不太清楚了,說明看得也不太認真 第一題問了移動網際網路與傳統網際網路的差異,以及針對這種差異應該怎麼在移動網際網路開展用研。第四題要隆重推出 拿到試卷的時候我看到這道題就笑崩了 題幹是說自己的乙個男性...

百度的筆試題(開發測試工程師)

1.改程式目的是從乙個字串中求出字母a z分別出現的次數。include stdafx.h include stdio.h include string.h void foo char a 100 int cnt 256 for char c a c z c 找出程式中的錯誤,並且修改!修改為 in...