大眾點評筆試題最後兩題題解

2021-06-26 06:57:09 字數 1275 閱讀 4090

問題1:

這是一道動態規劃的問題,狀態轉移方程為

dp[i] = dp[i-3] + dp[i-1] , i>= 3(i<3時dp[i]=1,只有1種情況)

我這裡直接開了乙個dp陣列解決這個問題。在init方法中進行了初始化。

另外,考慮到為了方便測試,我用了乙個遞迴函式dfs(m,n,str)來進行對所有情況的輸出。具體見**:dfs函式的功能就是輸出所有的可行方案。

如:當我輸入5的時候,輸出:

4所有方案:

11111

211121

112同時我設定了數n的範圍,當n<0時或n大於我設定的範圍時,會提示出錯。

下面是c++**:

#include #include #include #include #include using namespace std;

const int maxn = 1010;

int dp[maxn];

void init()

int main()

if(n >= 1010)

int ans = dp[n];

printf("%d\n" , ans);

printf("所有方案:\n");

dfs(n , n , "");

}return 0;

}

問題2:

首先通過**得到二進位制數:

#include #include #include #include using namespace std;

void get(int n)

int main()

1)至少需要開12個執行緒。

首先我把3593表示成二進位制數,為111000001001,一共有12位,然後我開十二個程序,第i個程序中包含所有二進位制表示中第i位為0的使用者的集合,如果演算法能夠檢測到違規使用者,那麼違規使用者的第i位二進位制數就是0,否則為1.這樣開12個執行緒就能得到第i位使用者的所有二進位制位的數字,以此得到該違規使用者的數字。

2)至少需要開6個。

第一秒先判斷3593的前6個二進位制位;

第二秒判斷3593的後6個二進位制位。

方法同1)。

注:2)的解答不一定對。

大眾點評2015筆試題(答案)

1 有10個檔案,每個檔案1g,每個檔案的每一行存放的都是使用者的query,每個檔案的query都可能重複。要求你按照query的頻度排序。答案 1 遍歷10個檔案的每個query,取t hash query 10,將這個query存入第t個檔案。這一步結果將相同query儲存至同乙個檔案中,並且...

兩道大眾點評網技術部的筆試題

技術部全職 研發工程師問題測試 答題時間45分鐘 共兩道題目,為必答題 問題 如何快速比較這兩個字串是否相等?兩個字串相等的條件如下,字串中的每個字母出現的次數都相等。例如 abbcd和acdbb是相等的,因為a都出現1次,b都出現2次,c都出現3次,d都出現4次。請先給出解題的思路,然後用你熟悉的...

筆試最後兩個程式設計題

前陣參加了小公尺筆試,最後倆程式設計題一直沒上機試試,今天下午閒著沒事,實現了下。include include int del blank char a int main void 第二個題目,一條直線有n個線段,知道首尾座標,求線段總長度,重疊部分按一次算 struct s.我將各個結構體元素按...