試題 華為筆試總結

2021-09-26 15:19:47 字數 1740 閱讀 5565

8.28晚7點參加了華為的筆試,共有3道程式設計題,通過做題分析,發現自己一直是個弟弟。

把記憶中的題,寫出來,再分析一遍。

給定三角形的周長l,求滿足這個周長的直角三角形的數量。

利用雙重迴圈遍歷最短邊長,和第二長邊,並利用勾股定理來判斷是不是直角三角形(滿足直角三角形的勾股定理一定是直角三角形三邊)

1、最短邊(ausing namespace std;

//第一題

int zhijiao(int l)

} return ans;

}int main()

輸入乙個或多個陣列,每個陣列都有6個矩陣成員元素,成員元素以空格為分隔,不同陣列分行。

矩陣是5*5矩陣,判斷這六個成員函式是不是相鄰的成員(有一邊相同),如果是輸出1,如果不是輸出0;

比如說輸入:[1 2 3 4 5 15] ;[1 2 12 23 45 35] 輸出為:[1;0]

矩陣:[  1,  2,  3,  4,  5] 

[11,12,13,14,15]

[21,22,23,24,25]

[31,32,33,34,35]

[41,42,43,44,45] ]

使用走迷宮的思路。走滿6個就說明6個,返回ture1;其他說明不相連,就返回false 0;

走迷宮:標記矩陣mark=;結構體(方向)4/8個方向;遞迴來實現迷宮回溯,(遞迴輸入:入口「本題多了乙個判斷引數」;遞迴終止條件;for4次/8次探索,每次探索都是先判斷標記,在比較判斷是否找到)

#include #include #includeusing namespace std;

int neighber(int i, int j, vectornums);

int* fin(int a);

int ret;

int a[5][5] = ,

, ,,

};int mark[5][5] = ;

bool check(vectornums)

int* fin(int a) ;

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

} }b[0] = -1;

b[1] = -1;

return b;

}struct direction ;

direction d[4] = ,,, };

//int ret = 0;

int neighber(int i, int j, vectornums)

} }return ret;

}int main()

} if (!s.empty())

bool ans = check(nums);

anses.push_back(ans);

nums.clear();

num.clear();

} for (auto r : anses)

cout << r << endl;

//vectornums = ;

return 0;

}

輸入兩個整數陣列a和b,兩個陣列中的元素都是不重複(唯一)而且無序,並且ab中的元素相同,只是順序可能不一樣,舉個例子a和b。

現在想通過分別刪除a和b中的部分元素,讓a、b剩下的元素 完全相同,求a陣列中需要刪除的最少元素數。(b也要刪除相同的元素)

先對a陣列的順序進行儲存,利用hash表來,那麼b陣列相對於a陣列的順序就可以得到了,這樣的話只需要b陣列剩下的元素為遞增陣列,那麼就可以和

華為筆試題

int a nsize 其中隱藏著若干 0,其餘非 0整數,寫乙個函式 int func int a,int nsize 使a 把0移至後面,非 0整數移至 陣列前面並保持有序,返回值為原資料中第乙個元素為0 的下標。盡可能不使用輔助空間且考慮效率及異常問題,注釋規範且給出設計思路 include ...

華為筆試題

某軟體需要實現建議的cd key演算法,輸入3個正整數,以空格隔開,根據這3個整數生成cd key字串,輸出格式 x x x xxyy,包括16個字元,以短劃線分開,其中,cd key最後兩個yy是用於cd key的自校驗,確保cd key本身是合法的。cdkey使用的字元表23456789abcd...

華為筆試題

輸入描述 輸入乙個字串,字串中包含了全量字符集和已占用字符集,兩個字符集用 相連。前的字符集合為全量字符集,後的字符集為已占用字元集合。已占用字符集中的字元一定是全量字符集中的字元。字符集中的字元跟字元之間使用英文逗號分隔。字符集中的字元表示為字元加數字,字元跟數字使用英文冒號分隔,比如a 1,表示...