筆試面試 2015華為軟體開發實習生

2021-07-03 07:49:23 字數 1175 閱讀 9052

簡單題: 10個數字位取3個組成乙個三位數(不能重複),使得這三位數的值最大。

方法:這個是送分題,我比較懶,直接用set 來存放,然後輸出後面三個位置的值來搞定

奇偶數排序問題

問題描述: 一串無序的數字,先根據所以奇數的逆序排序,再輸出所有偶數的順序排序數值。

方法: 很簡單,基本兩個排序就可以搞定。

最大的邊長問題:

問題描述:大致是這樣子,有乙個n*m的0 ,1 組成的矩陣,求該矩陣的最大的正方形子區域,使得正方形區域內的所有元素都為1,並輸出改正方形的邊長。其中n,m<=400;

解法1:暴力解法:窮盡所有的正方形子區域(o(n^2))+判斷該正方形子區域內的元素是否都為1(o(n^2)),所以該方法的時間複雜度是(o(n^4)),鑑於n,m<=400,改方法肯定不可取的。

解法n:

這種問題,一定要想方設法的避免重複計算問題,可以考慮以空間換時間的方式去實現。

想法1: 積分圖的方法://跟影象上的積分圖乙個概念。

偽**

1. 計算改n*m矩陣的積分圖,時間複雜度為o(n*m);

2. 再窮舉所有的正方形子區域(o(n^2))

3. 計算該正方形區域的所有的元素和o(1)

4. 縱上改方法的時間複雜度為o(n*n),鑑於n,m<=400,所以該方法的效率不算太低。

源**:

#include

using namespace std;

int data[400][400];//原始資料

int ig[401][401];//積分圖

bool evaluate(int a,int b,int edge)

int main()

//計算積分圖

for(int i=0;i<=n;i++)

for(int j=0;j<=m;j++)

for(int i=1;i<=n;i++)

}//計算所有可能的子正方形區域

//子正方形區域內的元素如果都為1,則其積分圖為邊長的平方.

int max_edge=m>n?n:m;

for(int edge=max_edge;edge>=1;edge--)}}

//cout<<0}

可惜當時做的時候,沒有想到這個,只是在考完回來的路上才想到的。

2021華為秋招軟體開發筆試題

例如系統記錄到某學生頁面停留時間如下 10 120 10 20 10 10 50 該學生第一分鐘學完1頁,第二分鐘學完0頁,第三分鐘學完5頁,第四分鐘學完1頁,則判定為不滿足要求。輸入描述 輸入資料報含多個學生的提交記錄,第一行是整數表示記錄個數,每個記錄佔一行,每行的第乙個數是n,表示頁面數,然後...

軟體開發常見筆試面試題整理

1 物件導向和面向過程的區別是什麼?面向過程 概念 面向過程是一種以過程為中心的程式設計思想,它是一種基礎的順序的思維方式,物件導向方法的基礎實現中也包含面向過程思想 特性 模組化 流程化 優點 效能比物件導向高,因為類呼叫時需要例項化,開銷比較大,比較消耗資源 比如微控制器 嵌入式開發 linux...

軟體開發實操彙總(二)軟體開發基礎

有了上述經營戰略 內部資源配置及專案自身情況等內容的彙總及分析,針對不同情況,在開發前,應具體深入的進行專案的前期調研,梳理出專案的具體需求及各種問題,將需求和問題一一落實到文件編制。此過程是專案是否能夠順利實施並取得預期效果的關鍵,大體分為以下幾個步驟 1 需求和問題的歸納 2 編制需求文件 問題...