華為歷年機考題收錄
1 前言
華為每年(實習生和校招)的筆試題一般都是三道程式設計題。大約是因為華為體量太大,崗位太多,如果每個崗位都針對性出題目,成本也高。
總的來說,華為的機考題還是比較簡單。(即使對於我這樣偶爾寫寫leetcode的前端開發者也是如此。)華為宣講會的主持人也坦誠機考只要通過一道,華為就給面試的機會。
這篇文章用來收錄華為歷年的機考題。
2 2015-01
題目:
第一題(60分):
按要求分解字串,輸入兩個數M,N;M代表輸入的M串字串,N代表輸出的每串字串的位數,不夠補0。例如:輸入2,8, “abc” ,“123456789”,則輸出為“abc00000”,“12345678“,”90000000”
//思路:遞迴
#include<iostream>
#include<string>
using namespace std;
void dfs(string a,int n) {
if (a.length() <= n) { //如果字串長度不夠,補0,直接輸出
cout << a;
for (int i = 0; i < n - a.length(); i++) {
cout << '0';
}
cout << endl;
}
else { // 長度超出,截斷字串
cout << a.substr(0, n) << endl;
dfs(a.substr(n), n); //遞迴字串其餘的內容
}
}
int main() {
int m,n;
cin >> m >> n;
string a;//輸入的字串
for (int i = 0; i < m; i++) {
cin >> a;
dfs(a,n); //遞迴
}
}
3 2015-02
題目:
第二題:去除重複字元並排序
執行時間限制:無限制
內容限制: 無限制
輸入: 字串
輸出: 去除重複字元並排序的字串
樣例輸入: aabcdefff
樣例輸出: abcdef
//思路:先排序後去重
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main() {
string s;
cin >> s;
sort(s.begin(), s.end());//先排序
if (s.length() == 0) return 0;
for (int i = 1; i < s.length(); i++) {
if (s[i] == s[i-1]) {
s.erase(i,1);//去重
i--;
}
}
cout << s;
}
4 2015-03
題目:
第三題:等式變換
輸入一個正整數X,在下面的等式左邊的數字之間新增+號或者-號,使得等式成立。
1 2 3 4 5 6 7 8 9 = X
比如:
12-34+5-67+89 = 5
1+23+4-5+6-7-8-9 = 5
請編寫程式,統計滿足輸入整數的所有整數個數。
輸入: 正整數,等式右邊的數字
輸出: 使該等式成立的個數
樣例輸入:5
樣例輸出:21
//動態規劃
//動態方程(有點難理解):當前種類=符號位加號+符號為減號+沒有符號的種類
//dp(before,des,n,ex)= dp(before - 1, before, res + des,1) + dp(before - 1, before, res - des,1) + dp(before - 1, before*pow(10, ex)+des, res,ex+1);
// before: 需要判定的符號前面的數字的個數,初始為8
// des: 需要判定的符號後面的數字,初始為9
// n:方程右邊的結果
// ex:階乘數,因為符號有三種可能,加號,減號,或者沒有,如果沒有,那麼ex就用於計算當前值
#include<iostream>
#include<cmath>
using namespace std;
int dp(int before, int des, int res,int ex) {
if (before == 0) {
if (des == res) {
return 1;
}
else {
return 0;
}
}
else {
return dp(before - 1, before, res + des,1) + dp(before - 1, before, res - des,1) + dp(before - 1, before*pow(10, ex)+des, res,ex+1);
}
}
int main(){
int n; cin >> n;
cout << dp(8,9,n,1);
}
5 2018-01
/*
括號匹配
給定一個字串,裡邊可能包含“()”、“[]”、“{}”三種括號,請編寫程式檢查該字串中的括號是否成對出現,且巢狀關係正確。
輸出:true:若括號成對出現且巢狀關係正確,或該字串中無括號字元;
false:若未正確使用括號字元。
實現時,無需考慮非法輸入。
輸入描述:
輸入為:
字串
例子:(1+2)/(0.5+1)
輸出描述:
輸出為:
字串
例子:true
*/
/*
思路:棧
遇到左符號,則壓入,遇到右符號,彈出頂層的符號和右符號比對,如果符合,則繼續,
否則輸出false
*/
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int whatType(char ch){
if(ch=='['||ch=='{'||ch=='('){
return -1;
}else if(ch==']'||ch=='}'||ch==')'){
return 1;
}else{
return 0;
}
}
int ifFit(char a,char b){
if(a=='{'&&b=='}') return 1;
if(a=='['&&b==']') return 1;
if(a=='('&&b==')') return 1;
return 0;
}
int main() {
vector<char> characters;
string a;
cin>>a;
for (int i = 0; i < a.length(); ++i) {
if(whatType(a[i])==-1){
characters.push_back(a[i]);
}else if(whatType(a[i])==1){
if(characters.empty()){
cout<<"false";return 0;
}else{
if(ifFit(characters[characters.size()-1],a[i])==0){
cout<<"false";return 0;
}else{
characters.pop_back();
}
}
}
}
cout<<"true";
return 0;
}
6 2018-02
/*
平安果
簡要描述:
給定一個M行N列的矩陣(M*N個格子),每個格子中放著一定數量的平安果。
你從左上角的各自開始,只能向下或者向右走,目的地是右下角的格子。
每走過一個格子,就把格子上的平安果都收集起來。求你最多能收集到多少平安果。
注意:當經過一個格子時,需要一次性把格子裡的平安果都拿走。
限制條件:1<N,M<=50;每個格子裡的平安果數量是0到1000(包含0和1000).
輸入描述:
輸入包含兩部分:
第一行M, N
接下來M行,包含N個平安果數量
輸出描述:
一個整數
最多拿走的平安果的數量
示例:
輸入
2 4
1 2 3 40
6 7 8 90
輸出
136
*/
/*
思路:動態規劃
動態方程:當前位置能夠獲得的最大蘋果數=max(從上面走能夠獲得最大蘋果+從左邊走能獲得最大蘋果)
dp(0,0)=app[0][0]
*/
#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
int dp(int m, int n,int apple[][50]) {
if (m == 0 && n == 0) {
return apple[0][0];
}
else if (m == 0) {
return apple[m][n] + dp(m, n - 1, apple);
}
else if (n == 0) {
return apple[m][n] + dp(m-1,n,apple);
}
else {
return max(apple[m][n] + dp(m, n - 1, apple), apple[m][n] + dp(m - 1, n, apple));
}
}
int main() {
//freopen("C:\\Users\\zhagshichao\\Desktop\\in.txt","r",stdin);
int m, n; cin >> m >> n;
int apple[50][50];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
int tmp; cin >> tmp;
apple[i][j] = tmp;
}
}
cout<<dp(1, 3,apple);
}
如有錯誤,還望指正。
以上。
相關推薦
華為歷年機考題收錄
1 前言 華為每年(實習生和校招)的筆試題一般都是三道程式設計題。大約是因為華為體量太大,崗位太多,如果每個崗位都針對性出題目,成本也高。 總的來說,華為的機考題還是比較簡單。(即使對於我這樣偶爾寫寫leetcode的前端開發者也是如此。)華為宣講會的主持人
華為歷年筆試面試機考試題1——數字顛倒,字串反轉
數字顛倒和字串反轉是一類題目,本質上是一樣的,所以可以放到一起來講。 題目描述 數字顛倒 輸入一個整數,將這個整數以字串的形式逆序輸出 程式不考慮負數的情況,若數字含有0,則逆序形式也含有
華為2017機試題
一、轉為下一個字母 給定一個字串,把字串內的字母轉換成該字母的下一個字母,a換成b,z換成a,Z換成A,如aBf轉換成bCg,字串內的其他字元不改變,給定函式,編寫函式void Stringchang(const char*input,char*output) 其中i
華為2018機試題
2018 1.數字處理 題目描述:給出一個不多於5位的整數,進行反序處理,要求 (1)求出它是幾位數 (2)分別輸出每一個數字(空格隔開) (3)按逆序輸出各位數字(僅數字間以空格間隔,負號與數字之間不需要間隔) 輸入描述:位數不大於5的整數 輸出描述:1.整數位數 2.
華為2016機試題
奇偶排序 輸入一串用空格隔開的數字串,對於數字串的奇數位按升序排序,偶數位按降序排序. 示例輸入:4 6 2 3 6 7 8 1 處理過程: 奇數位:4 2 6 8 升序排序結果: 2 4 6 8 偶數位:6 3 7 1 降序排序結果: 7 6 3 1 #in
華為2015機試題
一、字串分解 按要求分解字串,輸入兩個數M,N;M代表輸入的M串字串,N代表輸出的每串字串的位數,不夠補0。例如:輸入2,8, “abc” ,“123456789”,則輸出為“abc00000”,“12345678“,”90000000” 分析思路: 容易題 1.獲
華為2014機試題
一、過濾重複字元通過鍵盤輸入一串小寫字母(a~z)組成的字串。請編寫一個字串過濾程式,若字串中出現多個相同的字元,將非首次出現的字元過濾掉。比如字串“abacacde”過濾結果為“abcde”。 要求實現函式:void stringFilter(const char *pInputStr, lo
華為2013機試題
一、刪除子串1、題目描述:只要是原串中有相同的子串就刪掉,不管有多少個,返回子串的個數。2、題目分析:我們對比該題與《HWOJ 在一個字元中刪除第二個字元出現過的所有字元》《HWOJ 實現一個聽高階的字元匹配演算法》都是不一樣的。一定要注意區分所以我們這道題不適合用雜湊表來完成。我們可以利用指標來完
解決Android studio華為真機執行LogCat日誌不斷輸出問題
這個暑假我剛開始學習安卓開發,我用的是真機除錯,專案能正常執行,但是Logcat卻不斷輸出日誌,這嚴重影響了我檢視自己列印的日誌,所以誓要解決這問題,於是我經過百度和自己的摸索,得出如下兩個解決辦法: 1.用LogCat列印日誌,message里加上字首用以標識,然後在logCat裡用搜索字首內
尋找01矩陣中的最大子矩陣--華為OJ機試--java語言版
題目描述: 在一個M * N的矩陣中,所有的元素只有0和1,從這個矩陣中找出一個面積最大的全1子矩陣,所謂最大是指元素1的個數最多。 輸入: 輸入可能包含多個測試樣例。 對於每個測試案例,輸入的第一行
一道華為的機試題
同學最近找工作,遇到了一個機試題,咋一看感覺很簡單,後來做了一下,才發現裡面考察了很多東西,如字串的操作,大數的計算等等.... 廢話不說,直接上題目 1、程式實現目標:輸入1~20的數字n,求n以內資料的階乘之和。 1! + 2! + 3! +......+n! = ?
【演算法】列印順序——2017華為招聘機試題
某個印表機根據列印佇列執行列印任務。列印任務分為九個優先順序,分別採用數字1~9表示,數字越大優先順序越高。印表機每次從佇列頭部取出第一個任務A,然後檢查佇列餘下任務中有沒有比A優先順序更高的任務,如果有比A優先順序高的任務,則將任務A放到佇列尾部,否則執行任務A的列印。請編
華為2016機試題目03
題目描述如下: 開發一個簡單錯誤記錄功能小模組,能夠記錄出錯的程式碼所在的檔名稱和行號。 處理:1.記錄最多8條錯誤記錄,對相同的錯誤記錄(即檔名稱和行號完全匹配)只記錄一條,錯誤計數增加;(檔案所在的目錄不同,檔名和行號相同也要合併)2.超過16個字元的檔名稱,只記錄檔案
Android在華為真機測試無法輸出Log.d的解決辦法
在真機測試時想輸出Log.d但是沒反應,試了Log.i就有,很苦惱困惑,找了許多資料後解決辦法如下: 撥號盤輸入: *#*#2846579#*#* 點選ProjectMenu(也可能是系統選單)--->後臺設定---->LOG設定--->LOG開關 開啟重
華為2015機試--記錄出錯的程式碼所在的檔名稱和行號
我沒機會參加今年華為的提前招聘(都不知道有這個渠道)題目如下: 開發一個簡單錯誤記錄功能小模組,能夠記錄出錯的程式碼坐在的檔名稱和行號。 處理: 1.記錄最多8條錯誤記錄,對相同的錯誤記錄(即檔名稱和行號完全匹配)只記錄一條,錯誤計數增加; (檔案所在的目錄不同,檔名和行號
華為Java機試題__轉載
轉載http://blog.csdn.net/xcbeyond/article/details/45627247 1.程式實現目標: 輸入一個字串,將其各個字元對應的ASCII值加5後,輸出結果。 程式要求:該字串只包含小寫字母,若其值加5
華為摺疊機皇突然上架淘寶:價格驚人
6月14日訊息,華為Mate X通過3C認證,距離上市更近了。目前官方尚未公佈Mate X發售時間,令人意外的是淘寶第三方店鋪已經
(華為機考題)通過鍵盤輸入100以內正整數的加、減運算式,請編寫一個程式輸出運算結果字串。
#include <stdio.h> #include <stdlib.h> void add1(char *p1,int p2){int i,j;int a,b,sign;i=0;a=p1[i]-'0';i++;while(p1[i]!=' '){
從華為到金立 為何尷尬的總是國產高端機
聯發科 國產手機 臺灣經濟 處理器 供應鏈 據臺灣經濟日報報道稱,全球首款十核處理器聯發科X20目前的處境頗為不妙。作為聯發科旗下被寄希望與高通驍龍8XX系列對飈的X20處理器,卻有著數百萬顆尚未出貨,這讓聯發科受到較大的清倉壓力。雖然聯發科對此一再否認,但似乎已經是不爭的事實。而之所以旗
華為部分真機調試無法顯示log問題解決
方式 輸入 project class log 重新 pro logcat clip 真機測試時,部分華為手機無法獲取所有的log信息。或者說無法獲取Error下面級別的log信息。比方P7 這是由於部分華為機出廠默認log設置為關閉狀態。因此僅僅能獲取Error以上級