一道百度機器學習工程師職位的面試題

2022-02-16 09:51:09 字數 1159 閱讀 9634

分析:

大家看看我這麼做行不

```char a, b, c;

for(a = 'a'; a<='z'; a++)

for(b= a+1; b<='z'; b++)

for(c = b+1; c<='z'; c++)

printf("%c%c%c\n", a, b, c);

```問題1:不可能出現 bac等。因為每次我多加了 1 看看巢狀的 for 有什麼不同,但是題目要求只求組合不管順序。

問題2:如果你要這麼做 ,面試官必然會問 ,如果我要求 4 個字母的組合呢?(一臉懵逼狀=。=)

思路:我設想 a - z 每個字母給乙個標記 0 或 1 ,如果為 1 的時候表示這個字元在組合中 ,如果為 0 那麼表示這個字元不在組合中。

這樣子,我們需要 26 個標記位。

這個時候我們會發現 ,當所有變數都在組合中時, 那麼就是 26 個 1;當乙個變數都不在集組合中時,就是 26 個 0。

我們把 26 個 1 和 26 個 0 看成數字,那麼就是 0 和 (1 << 26) - 1。

那麼其它的組合,肯定是 0 到 (1 << 26) - 1 之間的數字,對吧

比如 cba 就是 ...0000000111

dcba 就是 ...00000000001111

所以說 我們做乙個迴圈 從 0 開始 到(1 << 26) - 1

然後只取有 3 個 1 的數字

然後再看對應的 1 代表哪個字元就可以了

具體就要看程式了:

```#include //某個數二進位制位上有幾個 1

int bit(unsigned int x)

return c;

}void print(unsigned int x, int count)

x = (x >> 1);

}printf("\n");}}

int main()

{const unsigned int n = 26;

const unsigned int c = 3;

const unsigned int x = (1 << n) - 1; //x=(1<<26)-1

unsigned int i = 0;

for(i=0; i這個解法真是666!#=,=

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

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

百度之星的一道題

乙個正整數有可能可以被表示為n n 2 個連續正整數之和,如 15 1 2 3 4 5 15 4 5 6 15 7 8 請編寫程式,根據輸入的任何乙個正整數,找出符合這種要求的所有連續正整數序列。輸入資料 乙個正整數,以命令列引數的形式提供給程式。輸出資料 在標準輸出上列印出符合題目描述的全部正整數...

2018 百度機器學習演算法工程師面試

走的是內推流程,發簡歷後沒幾天就打 約 面試,約的時間產不多隔了一周。面試那天,打過來,感覺挺有禮貌的,上來首先自我介紹沒什麼懸念,然後就是開始照著簡歷問。1.說下你簡歷上的那個 做的是什麼 2.裡的演算法比原來提公升了多少 3.用什麼語言?4.python的話,pass語句有什麼作用 5.還是py...