分析:
大家看看我這麼做行不
```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...