版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、大師兄教你如何過華為機試 寶典1內(nèi)功心法 大華為這個大數(shù)據(jù)時代土豪金海量式的招聘又要開始了! 近期聽說大華為的校招機試馬上就要開始了,由于華為軟件崗位的招聘只有技術(shù)面跟機試是與技術(shù)有關(guān)的內(nèi)容,所以機試的地位非常重要。對于機試,除了長期積累的軟件基本功以外,還有很多可以短期訓(xùn)練的東西,類似于考試之前的突擊,可以迅速提高機試成績,就像在我西電大楊老師考前最后一堂課一定要去,那個重點就是考點阿。 這篇機試葵花寶典的內(nèi)容是針對華為軟件類上機準備的,如果你認真看了本寶典,如果你是真正通過自己能力考上西電的話,想不過都難。同樣想拿高級題的同學(xué),請移步或者,刷上200道題,機試不想拿滿分都難。
2、 對于機試,首先應(yīng)該調(diào)整好自己的心態(tài),不要覺得寫程序很難,機試題很難,也不要去考慮,萬一機試考到自己不會的內(nèi)容怎么辦,要相信,機試題永遠是考察每個人的基礎(chǔ),基礎(chǔ)是不會考的很偏的,會有人恰好做過某個題而做出來那個題,但不會有人恰好沒做過一個題而做不出來那個題。 機試之前,應(yīng)該做的準備有: 1、買一本算法競賽入門經(jīng)典,這本書不同于普通的算法或者編程語言的書籍,這本書既講語言,又講算法,由淺入深,講的很好,能看完前幾章并且把例題都做會,想通過機試就很簡單了 2、調(diào)整好心態(tài),時刻告訴自己,哪些小錯誤是自己以前經(jīng)常犯的,最好用筆記本記錄下來,寫每道題前再看一遍,如果遇到代碼調(diào)不出來了,先想想自己是否犯過
3、以前那些錯誤。還有就是,看了題目以后,先仔細想清楚細節(jié),在紙上寫清楚自己需要用到的變量,以及代碼的基本框架,不要急于動手去寫代碼 3、不要懼怕任何一道看起來很難的題目,有不會的就去問身邊會的人,讓別人給自己講清楚 4、心中默念10遍C+跟C除了多了兩個加號其實沒有區(qū)別,會C就能上手C+ 5、大量的練習(xí)是必要且有效的 6、看完這篇寶典,預(yù)過機試、必練此功。 在這里推薦一個帖子,是機試歸來的學(xué)長寫的,寫的很不錯,里面的例題在后面的攻略中也會提及, 就在好網(wǎng)上。 寶典二:常用招式 1:機試常用變量類型CC+常用的變量類型有很多種,想通過機試,掌握好其中的幾種就可以,他們分別是int,double,
4、string, char int 類型是最常用的整數(shù)類型,對于輸入類型是整形的變量,使用int來進行定義和讀入。還有一種更大的整形變量是long long,在機試中一般不會涉及到考察,如果考慮到運算的過程中有可能超過int的大小,再考慮使用long long,int最大可以到達231級別,long long最大可以到達263。 PS:有時機試讀入多個整數(shù)的時候會是這樣的形式 5,10 中間有一個逗號,在這種情況下,其實讀入也是很簡單的,可以這么寫: scanf(“%d%c%d”,&a,&b,&c); 或者是: scanf(“%d”,&a); getchar();
5、 scanf(“%d”,&c); 有的機試題會說:兩個整數(shù)之間有若干個空格符或tab字符。在這種情況下,讀入的方式還是使用scanf(“%d%d”,&a,&b)這樣,scanf函數(shù)或者cin函數(shù)都可以很好的吃掉除了數(shù)字字符以外的字符。 double類型是最常用的浮點數(shù)類型,當運算涉及到小數(shù)運算的時候,需要使用double來定義。其中,特別需要注意的一點是,如果使用了如下語句: double x=a/b; 在這里,a和b是int,那么x的值將是a和b整除后的結(jié)果,而不是想要的結(jié)果,想要得到期望的結(jié)果,須改成 double x=(a+0.0)/b; 在這里,將a加上一個浮點
6、數(shù),程序會在后臺將它強制轉(zhuǎn)換成一個double類型的數(shù)字,此時再除一個整數(shù),就沒有問題了 string類型是遇到字符串類問題應(yīng)該首選的變量,區(qū)別于字符數(shù)組char,string類型是直接將字符數(shù)組封裝了進去,定義string s相當于定義了一個大小特別長的字符數(shù)組。使用string的好處是,避免了使用char數(shù)組時定義數(shù)組長度過小導(dǎo)致越界,同時更加直觀的將字符串看做了一個對象。 如果要定義一個string變量,首先得包含string的頭文件以及使用C+中的標準命名空間,標準命名空間這個東西,只要記得寫上就行,沒有任何影響。 #include<iostream> /這一句是c+的頭文
7、件,c語言代碼一樣可以把它包含進來,只要將程序后綴名改成.cpp即可,其他都是一樣的。 #include<string.h> using namespace std; 在不同的環(huán)境下,可能會有不同的頭文件包含了string的用法,可能的頭文件有cstring,string。在機試的環(huán)境中,一般使用string.h即可。 定義一個string和定義其他變量方式相同: string s; 讀入和輸出string也只需要使用 cin>>s; cout<<s; 這是比c語言的字符數(shù)組要簡單了很多的。 需要注意的是,string類型讀入的時候與char數(shù)組的scanf
8、讀入一樣,都是遇到空格符或者回車符就停止讀入,當做一個完整字符串來處理,因此,使用string處理帶空格的字符串是不明智的,其他情況下是都可以的。 string變量包含了很多強大的功能,如: cpp view plaincopyprint? 1.si; /這么寫,返回的就是字符串s第i+1位的字符,返回的類型是char型,其中,s0是它的第一位,與字符串相同。 2.s.size(); /返回字符串的長度,返回的長度是l,則s從s0到sl-1表示的是其每一位的字符。 3.if (s1<s2) /兩個string是可以方便的使用大小于符號以及等于號來比較大小的,比較的方式是,從左向右按位進行
9、比較,每一位按照字典序來比較。如”aaaa”<”abc”<”bcd”,但值得注意的一點是,比較的時候應(yīng)用變量進行比較,即s1<s2這種,而不能用”aa”<”bb”這樣,如果要比較他倆的大小,應(yīng)這么寫: 4.s1="aa" s2="bb" 5.if (s1<s2) string類型還有很多強大的功能,但是對于機試來說,會使用以上三種功能就足夠了。 char50,char100這種字符數(shù)組與string類型很像,只不過他是C語言里面的用法,對于機試,只建議在輸入帶有空格字符的字符串時使用char數(shù)組,使用的方式是: gets(s
10、); 在這里,gets函數(shù)區(qū)別于scanf函數(shù)的是,gets函數(shù)會直接將一整行讀進來,而不會遇到空格就停下來。 常見機試題類型 初級題常見的類型無非就是字符串處理類的題目和數(shù)字處理類的題目,在這里歸結(jié)如下: 1:字符串處理類 字符串所有大寫轉(zhuǎn)小寫: 1.for (int i=0;i<s.size();i+) 2. if (si>=A && si<=Z) 3. si=si-A+a; /si-A返回的是兩個大寫字母之間的差值,比如C與A的差值是2,這個差值是一個int類型,也可以直接提取出來使用。給這個差值再加上字母a,相當于給a再往后推移二位,變成字母c。這種用
11、法是字符串內(nèi)最普遍的一種用法,小寫轉(zhuǎn)大寫也是一樣。 刪除滿足指定要求的字符后輸出: 在機試中,判定對錯的方式是比較輸出的結(jié)果,而非檢查內(nèi)部的結(jié)果,因此,“刪除”對于機試來說,相當于“不輸出”,也就是說,不需要調(diào)用s.erase()函數(shù),只需要在遇到被刪除的字符時,跳過,不輸出即可。 1.for (int i=0;i<s.size();i+) 2. 3. if (si滿足刪除要求) 跳過; 4. else 輸出si; 5. 倒轉(zhuǎn)字符串: 與刪除字符串的思路類似,倒轉(zhuǎn)一個字符串,其實就是倒著輸出,只需要將循環(huán)反過來就可以。 1.for (int i=s.size()-1;i>=0;i-
12、) 字符串比較大?。?如果比較的規(guī)則與字符串的比較規(guī)則相同,則直接使用s1>s2這種方式,如果規(guī)則不同,則用一重循環(huán)按位比較即可。 2、數(shù)字處理類 數(shù)字處理類的題目,最常見的兩種考察形式是整數(shù)拆分、進制轉(zhuǎn)換和排序。 整數(shù)拆分是指將一個整數(shù)拆分開每一位,比如123拆分成1,2,3。整數(shù)拆分的思路有兩種,第一種是直接用字符串讀入,然后把每一位用字符的形式提取出來: cpp view plaincopyprint? 1.for (int i=0;i<s.size();i+) 2.<span style="white-space:pre"> </spa
13、n>numi=si-'0' 還有一種思路是不斷去除以10,把余數(shù)提取出來,方法是: cpp view plaincopyprint? 1.while (n!=0) 2. 3.<span style="white-space:pre"> </span>numi=n%10; 4.<span style="white-space:pre"> </span>n=n/10; 5.<span style="white-space:pre"> </span>
14、;i+; 6. 進制轉(zhuǎn)換: 進制轉(zhuǎn)換又分為10進制轉(zhuǎn)換成別的進制以及別的進制轉(zhuǎn)換成10進制,進制轉(zhuǎn)換其實特別簡單,只需要記住如下代碼: 10進制轉(zhuǎn)換成X進制 cpp view plaincopyprint? 1.while (n!=0) 2. 3.<span style="white-space:pre"> </span>numi=n%x; 4.<span style="white-space:pre"> </span>i+; 5.<span style="white-space:pre&q
15、uot;> </span>n=n/x; 6. X進制轉(zhuǎn)換成10進制 cpp view plaincopyprint? 1.for (int i=0;i<=length;i+) 2. 3.ans=ans*x+numi; 4. 其中,numi表示的是該x進制數(shù)的每一位,比如一個二進制數(shù)101,用這種轉(zhuǎn)換方式去轉(zhuǎn)換,ans的值從i=0到i=2處理后分別是1,2,5。 排序: 排序這個東西,其實不需要學(xué)習(xí)冒泡啊、快排啊之類的算法,應(yīng)對機試,C+中自帶的sort函數(shù)就可以很好的解決,請看下面一段代碼 cpp view plaincopyprint? 1.</pre>&
16、lt;pre name="code" class="cpp">#include<iostream> 2.#include<algorithm> /這個是包含sort函數(shù)的頭文件 3.using namespace std; 4.int arr100,n; 5.int cmp(int x,int y) /這個函數(shù)是sort函數(shù)比較兩個元素優(yōu)先級的函數(shù),在這里計算出兩個元素的優(yōu)先級,然后返回即可。 6. 7. int importance1,importance2; 8. /此處插入代碼計算x,y的重要性 9. return i
17、mportance1<importance2; /此處返回小于號,意思是優(yōu)先級小的在前,如return x<y;則數(shù)組會由小到大排序 10. 11.int main() 12. 13. cin>>n; 14. for (int i=0;i<n;i+) cin>>arri; 15. sort(arr,arr+n,cmp); 16. return 0; 17. 這一段代碼的作用是讀入n個數(shù)字,然后按優(yōu)先級進行排序,排序的比較方法在cmp函數(shù)中實現(xiàn),排序的具體過程不需要考慮。 可以看到,其實只需要記住sort函數(shù)的用法,要通過機試,排序算法是根本不需要學(xué)習(xí)的
18、,so easy! 總結(jié):機試中,掌握好int,double,string,char,還有數(shù)組,就足夠用了,但考察的內(nèi)容不僅僅是上述這些,想要通過機試,還是應(yīng)該多多練習(xí),多多學(xué)習(xí),不局限于上面所說的內(nèi)容 寶典三:擂臺實戰(zhàn) 首先推薦一個網(wǎng)站,上面的很多題目,難度很適合機試,如: 很簡單:1031,1120,1122,1121,1103,1104,1281, 簡單:1049,1181,1182,1279,1280, 中等:1106,1108,1183,1288. 難:1105,1282,1283, 大家可以根據(jù)自己的水平去訓(xùn)練,其實里面的難題也是很簡單的,歸類到題庫中的話都屬于簡單題,只要好好看書
19、學(xué)習(xí)都是可以做出來的,下面放幾道例題,這些題都是機試很有可能考的題目,或者是非常類似的題目,已經(jīng)有了仔細的注釋,代碼寫的倉促 1.簡單題 2.題目描述 3.輸入一個字符串,刪除其中所有的數(shù)字,所有大寫字母改成小寫,其他不變,并輸出 4.5.輸入描述 6.一個字符串,保證沒有空格,以回車符結(jié)束,字符串長度<=20 7.輸出描述 8.一個字符串,為題目要求的結(jié)果 9.10.輸入樣例 11.aAbB13A 12.輸出樣例 13.aabba 14.15.解題思路:模擬題目要求即可,遇到數(shù)字就跳過不輸出,遇到大寫字母就改成小寫。 16.17.*/ 18.#include<iostream&g
20、t; 19.#include<string.h> 20.using namespace std; 21.int main() 22. 23. string s; 24. cin>>s; 25. for (int i=0;i<s.size();i+) /枚舉字符串的每一位 26. 27. if (si>='0' && si<='9') continue; /遇到數(shù)字就跳過 28. if (si>='A' && si<='Z') si=si-'
21、;A'+'a' /遇到大寫字母就改成小寫 29. cout<<si; 30. 31. cout<<endl; 32. 33.</span> 34.簡單題 35.題目描述 36.輸入一個字符串,統(tǒng)計其出現(xiàn)頻率最高的字符,并輸出。若存在兩個字符出現(xiàn)頻率相同,則輸出字典序較小的那一個 37.38.輸入描述 39.一個字符串,保證沒有空格,以回車符結(jié)束,字符串長度<=20 40.輸出描述 41.一個字符 42.43.輸入樣例 44.aabbaabb 45.輸出樣例 46.a 47.48.解題思路:做一個頻率數(shù)組來統(tǒng)計所有字符的出現(xiàn)頻率,
22、機試時候不會有漢字輸入,因此只考慮輸入是ASCII編碼的情況。 49.50.*/ 51.#include<iostream> 52.#include<string.h> 53.using namespace std; 54.int f200; /頻率數(shù)組 55.int biggest=0; /記錄最大的值 56.int main() 57. 58. memset(f,0,sizeof(f); /將f中的全部元素變成0,寫循環(huán)也可 59. string s; 60. cin>>s; 61. for (int i=0;i<s.size();i+) /枚舉字
23、符串的每一位 62. 63. int num=si; /將si轉(zhuǎn)換成它的ascii碼 64. fnum+; /頻率次數(shù)加1 65. biggest=max(biggest,fsi); /比較找出最大的 66. 67. for (int i=0;i<=129;i+) /枚舉所有的字符的頻率,找出頻率最高且字典序最小的那一個 68. if (fi=biggest) /如果滿足要求 69. 70. cout<<(char)(i)<<endl; 71. break; /這句break保證了我們只會輸出一個滿足要求的結(jié)果 72. 73. 74./* 75.簡單題 76.題目
24、描述 77.輸入一個數(shù)字,將其倒序輸出,并輸出其各個位上的乘積 78.79.輸入描述 80.一個正整數(shù),保證在int范圍內(nèi) 81.輸出描述 82.兩個數(shù)字,用空格隔開,第一個數(shù)字為其倒序的值,第二個數(shù)字是各個位上的乘積 83.84.輸入樣例 85.134 86.輸出樣例 87.431 12 88.89.90.解題思路:刪繁就簡,直接當字符串讀入,處理就簡單多了。 91.PS:此處不用糾結(jié)于題意,沒有特別強調(diào)是按照一個數(shù)的格式輸出,因此可以有前導(dǎo)0 92.93.*/ 94.#include<iostream> 95.#include<string.h> 96.using
25、namespace std; 97.int main() 98. 99. string s; 100. int ans=1; 101. cin>>s; 102. for (int i=s.size()-1;i>=0;i-) 103. 104. cout<<si; /倒序輸出每一位 105. ans=ans*(si-'0'); /ans累乘每一位的值 106. 107. cout<<' '<<ans<<endl; 108. 109.中級題 110.題目描述 111.輸入10個數(shù)字,按各個位上的和從小
26、到大排序,如果相同,則按數(shù)字從小到大排序。 112.113.輸入描述 114.10個正整數(shù),保證都在int范圍內(nèi),用空格隔開 115.輸出描述 116.10個數(shù)字,其從大到小的值,用空格隔開,最后一個數(shù)字后不加空格 117.118.輸入樣例 119.11 3 2 4 5 9 8 7 10 6 120.輸出樣例 121.10 2 11 3 4 5 6 7 8 9 122.123.解題思路:調(diào)用C+自帶的sort函數(shù),重新改寫compare函數(shù)即可。 124.*/ 125.#include<iostream> 126.#include<string.h> 127.#incl
27、ude<algorithm> /這個是調(diào)用sort函數(shù)必須的頭文件 128.using namespace std; 129.int arr10; 130.int cal(int x) /計算一個數(shù)字各個位上的和 131. 132. int ans=0; 133. while (x!=0) 134. 135. ans+=x%10; 136. x/=10; 137. 138. return ans;1 139. 140.int cmp(int i,int j) 141. 142. if (cal(i)!=cal(j) /如果兩個數(shù)字各個位上的和不相同,則按照各個位上的和來排序 143
28、. 144. return cal(i)<cal(j); 145. 146. else /否則,即兩個數(shù)各個位上的和相等,則按照數(shù)字本身來排序 147. 148. return i<j; 149. 150. 151.int main() 152. 153. for (int i=0;i<=9;i+) cin>>arri; 154. sort(arr,arr+10,cmp); 155. for (int i=0;i<=9;i+) 156. 157. cout<<arri; 158. if (i!=9) cout<<' '
29、 /如果不是最后一個數(shù)字,則需要在兩個數(shù)字中間輸出一個空格。 159. 160. cout<<endl; 161. /PS:最后一個輸出的后面一定要跟回車符而不是空格符 162. 163.中級題 164.題目描述 165.你有一個容量為100的籮筐,給你30個物品,每個物品的體積已知問:最多能裝多少個物品進籮筐 166.輸入描述 167.一行30個正整數(shù),用空格隔開,表示每個物品的體積 168.輸出描述 169.一個數(shù)字,為最多能裝下的物品數(shù) 170.171.輸入樣例(此處用3個物品作為樣例,實際讀入為30個) 172.5 59 100 173.輸出樣例 174.2 175.176
30、.解題思路:利用性價比對所有物品進行排序,優(yōu)先裝性價比高的,在此題中,性價比就是物品的體積 177.*/ 178.#include<iostream> 179.#include<string.h> 180.#include<algorithm> /這個是調(diào)用sort函數(shù)必須的頭文件 181.using namespace std; 182.int arr31; 183.int main() 184. 185. for (int i=0;i<=29;i+) cin>>arri; 186. sort(arr,arr+30); /從小到大排序 1
31、87. /從最小的開始裝框,直到裝滿了為止。 188. int sum=0; 189. for (int i=0;i<=29;i+) 190. 191. if (sum+arri>100) break; /如果不能裝了就立刻停下來 192. sum=sum+arri; /否則就把這個也裝進去 193. 194. /程序跳出的那個位置的i,就是我們一共裝了的數(shù)量,如果全部都裝了,則i=30 195. cout<<i<<endl; 196. 197.初級題:(此題是我曾經(jīng)做的機試題) 198.描述:10個學(xué)生考完期末考試評卷完成后,A老師需要劃出及格線,要求如下
32、: 199.(1) 及格線是10的倍數(shù); 200.(2) 保證至少有60%的學(xué)生及格; 201.(3) 如果所有的學(xué)生都高于60分,則及格線為60分 202.(4) 及格線越高越好,但最高不能超過60 203.輸入:輸入10個整數(shù),取值0100 204.輸出:輸出及格線,10的倍數(shù) 205.輸入樣例:61 51 49 30 20 10 70 80 90 99 206.輸出樣例:50 207.208.解題思路:從高到低枚舉及格線,輸出第一個滿足要求的及格線就是答案 209.*/ 210.#include<iostream> 211.using namespace std; 212.i
33、nt arr10; 213.int main() 214. 215. for (int i=0;i<=9;i+) cin>>arri; 216. int line; 217. for (line=60;line>=0;line-=10) /從高到低枚舉分數(shù)線 218. 219. int num=0; /該變量用來統(tǒng)計這個分數(shù)線下,是否超過60%同學(xué)及格 220. for (int i=0;i<=9;i+) 221. if (arri>=line) /如果分數(shù)大于等于及格線,說明在這個分數(shù)線下是及格的 222. num+; 223. if (num>=6
34、) /如果超過60%的人及格,在這里10的60%就是6 224. break; /滿足了要求就立刻break,說明這是分數(shù)線 225. 226. cout<<line<<endl; 227. 228.中級題:100分 (此題是我曾經(jīng)做的機試題) 229.描述:一條長廊里依次裝有n(1 n 65535)盞電燈,從頭到尾編號1、2、3、n-1、n。每盞電燈由一個拉線開關(guān)控制。開始,電燈全部關(guān)著。 230.有n個學(xué)生從長廊穿過。第一個學(xué)生把號碼凡是1的倍數(shù)的電燈的開關(guān)拉一下;接著第二個學(xué)生把號碼凡是2的倍數(shù)的電燈的開關(guān)拉一下;接著第三個學(xué)生把號碼凡是3的倍數(shù)的電燈的開關(guān)拉一下
35、;如此繼續(xù)下去,最后第n個學(xué)生把號碼凡是n的倍數(shù)的電燈的開關(guān)拉一下。n個學(xué)生按此規(guī)定走完后,長廊里電燈有幾盞亮著。注:電燈數(shù)和學(xué)生數(shù)一致。 231.232.輸入:電燈的數(shù)量 233.輸出:亮著的電燈數(shù)量 234.樣例輸入:3 235.樣例輸出:1 236.237.解題思路1:這道題,如果要模擬的話,當然是可以的,但對于代碼基礎(chǔ)較差的同學(xué)寫起來就比較吃力了,在這里寫模擬的做法 238.解題思路2:在這道題上面多思考思考,可以看出,對于任何一個燈來說,比如12,其因數(shù)有1,2,3,4,6,12。說明,編號為1,2,3,4,6,12的學(xué)生分別要拉它一下,在這里發(fā)現(xiàn),1*12=12,2*6=12,3*
36、4=12,所以其因數(shù)都是一一對應(yīng)的,也就是,1拉的那一下被12抵消了,2拉的那一下被6抵消了,那么誰不會被抵消呢?答案是平方數(shù),比如9的因數(shù)是1,3,9,那么3*3=9,而3只拉一次,所以不會被抵消。因此,這道題的答案就是,輸入的n以內(nèi)的平方數(shù)個數(shù),等于(int)sqrt(n)。 239.從這道題可以看出,編程的很多時候,多思考比多動筆要有用的多。 240.241.*/ 242.#include<iostream> 243.#include<string.h> 244.using namespace std; 245.int vis65536,n; 246.int ma
37、in() 247. 248. cin>>n; 249. memset(vis,0,sizeof(vis); /這句話的意思是把vis數(shù)組清0,0表示此刻燈是關(guān)著的,1表示是開著的 250. for (int i=1;i<=n;i+) /枚舉每一個學(xué)生的編號 251. for (int j=i;j<=n;j+=i) /從j=i開始,每次給j+i,使得i,i*2,i*3,.,這些燈全部都被拉一次開關(guān) 252. visj=1-visj; /1->0,0->1,本質(zhì)上都是用1減去它本身。 253. int ans=0; /統(tǒng)計答案 254. for (int i=1
38、;i<=n;i+) 255. if (visi=1) /如果現(xiàn)在是開燈狀態(tài),答案加一 256. ans+; 257. cout<<ans<<endl; 上面的所有代碼能夠看懂,并且自己實現(xiàn)一遍,再練上幾個類似的題,過機試肯定沒問題,能夠輕松寫出上面的代碼,那么機試優(yōu)秀肯定沒問題。想拿滿分,請去學(xué)習(xí)搜索(dfs,bfs),樹(先中后序遍歷,及已知遍歷對樹的構(gòu)造等),棧(怎么用數(shù)組模擬棧,棧的特性等),圖論(最短路算法,連通性判斷等),動態(tài)規(guī)劃(這個就太多了,入門請看背包九講)等等等等。雖然寫了這么多,但高級題其實并沒有這么難,高級題主要考搜索比較多一些,偶爾會有樹、
39、棧、圖、動態(tài)規(guī)劃的題目,不過,要想當個好碼農(nóng),算法和數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)是必須的 機試葵花寶典就寫到這里了,大師兄在大華為等你們哪,來了我們一起在練獨孤九劍,六脈神劍。 附好網(wǎng)上另一師兄機試心得,共小弟妹們參考: 華為機試成功歸來,與小伙伴們分享下經(jīng)驗 前段時間參加華為機試,機試通過的可以優(yōu)先錄取,優(yōu)先選擇崗位和工作地,關(guān)鍵是面的好,還可以談更高的工資,最多在西安可以拿到18W。好處還是蠻多的,抱著試試看的態(tài)度就去了。哈哈,華為機試記錄正是開始。 提前在網(wǎng)上交了簡歷,周圍同學(xué)只要報了軟件研發(fā)類的相關(guān)崗位都收到短信通知,需要用到編程的同學(xué)基本上都受到短信了。一天三波,在西工大毅字樓三樓機房,南門進去直走
40、左拐就到了,我是第二天早上的機試,前一天已經(jīng)聽機試過的同學(xué)考的內(nèi)容涉及數(shù)組、鏈表、指針、字符串、循環(huán)、枚舉、排序等吧,這個估計要看人品,平時出門多扶老奶奶過馬路吧。其實考過后發(fā)現(xiàn)這個機試跟平時做項目不一樣,項目可能更多的注重實現(xiàn)研究所需要的某個功能不會去注意這么多細節(jié),但是機試考的更多的是基本功。下面重點跟大家分享下上機題吧,我只列舉了我抽到的三個,其他同學(xué)抽到的跟這個大同小異吧。大家自己編寫下,對即將開始的面試都會有幫助的。 考試內(nèi)容:數(shù)組、鏈表、指針、字符串、循環(huán)、枚舉、排序等(從考過的同學(xué)那兒總結(jié)的可能不全) 試題結(jié)構(gòu):考試總共三道題,說是難中易,初級題(60分)、中級題(100分)、高
41、級題(160分),最難的接近一百行,說多不多,但自己敲出來還是費了點勁, 考試時間:兩個小時。平時練得少可能稍微捉雞點。 最簡單的一個 描述:10個學(xué)生考完期末考試評卷完成后,A老師需要劃出及格線,要求如下: (1) 及格線是10的倍數(shù); (2) 保證至少有60%的學(xué)生及格; (3) 如果所有的學(xué)生都高于60分,則及格線為60分 輸入:輸入10個整數(shù),取值0100 輸出:輸出及格線,10的倍數(shù) 輸入樣例:61 51 49 30 20 10 70 80 90 99 輸出樣例:50 自己編寫代碼簡單如下: 1.#include <stdio.h> 2. 3. 4.void bubble
42、Sort(int arr) 5. 6. int i = 0; 7. int j = 0; 8. int t = 0; 9. 10. for(i = 0;i < 10; i+) 11. 12. for(j = 0; j < (9 - i); j+) 13. 14. if(arrj + 1 < arrj) 15. 16. t = arrj + 1; 17. arrj + 1 = arrj; 18. arrj = t; 19. 20. 21. 22. 23. 24.int getPassLine(int a) 25. 26. int i = 0; 27. 28. bubbleSor
43、t(a); 29. 30. if (a0 >= 60) 31. 32. return 60; 33. 34. else 35. 36. return (a4 / 10) * 10); 37. 38. 39. 40. 41. 42. 43.int main() 44. 45. int a10 = 0; 46. 47. scanf("%d %d %d %d %d %d %d %d %d %d", &a0, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, &a9)
44、; 48. 49. printf("%d", getPassLine(a); 50. 51. return 0; 52. 描述:一條長廊里依次裝有n(1 n 65535)盞電燈,從頭到尾編號1、2、3、n-1、n。每盞電燈由一個拉線開關(guān)控制。開始,電燈全部關(guān)著。 有n個學(xué)生從長廊穿過。第一個學(xué)生把號碼凡是1的倍數(shù)的電燈的開關(guān)拉一下;接著第二個學(xué)生把號碼凡是2的倍數(shù)的電燈的開關(guān)拉一下;接著第三個學(xué)生把號碼凡是3的倍數(shù)的電燈的開關(guān)拉一下;如此繼續(xù)下去,最后第n個學(xué)生把號碼凡是n的倍數(shù)的電燈的開關(guān)拉一下。n個學(xué)生按此規(guī)定走完后,長廊里電燈有幾盞亮著。注:電燈數(shù)和學(xué)生數(shù)一致。 輸入
45、:電燈的數(shù)量 輸出:亮著的電燈數(shù)量 樣例輸入:3 樣例輸出:1 答案參考: 1.#include <stdio.h> 2. 3.#define MAX_BULB_NUM 65535 4./* 5.功能: n個學(xué)生按規(guī)定走完后,長廊里電燈有幾盞亮著。 6.原型: 7. int GetLightLampNum(int n); 8.9.輸入?yún)?shù): 10. int n: 電燈/學(xué)生的數(shù)量。 11.12.返回值: 13. int: 亮著的電燈數(shù)量。 14.15.*/ 16. 17.int GetLightLampNum(int n) 18. 19. char Bulb_FlagMAX_BUL
46、B_NUM = 0; /0代表燈滅,1代表燈亮 20. unsigned int i; 21. unsigned int j = 1; 22. unsigned int Count = 0; 23. 24. if (n < 1)|(n > 65535) 25. 26. return false; 27. 28. 29. while ( j <= n) 30. 31. for (int i = 1; i <= n; i+) 32. 33. if (0 = (i%j) 34. 35. Bulb_Flagi-1 += 1; 36. Bulb_Flagi-1 = Bulb_Fl
47、agi-1%2 ; /if操作用來反轉(zhuǎn)滿足條件的燈泡狀態(tài) 37. 38. 39. j+; 40. 41. 42. for (i = 0; i < MAX_BULB_NUM; i+) 43. 44. if (1 = Bulb_Flagi) 45. 46. Count+; 47. 48. 49. 50. return Count; 51. 52. 53.int main(void) 54. 55. int input; 56. scanf("%d",&input); 57. printf("%d",GetLightLampNum(input);
48、 58. 高級題樣題:地鐵換乘 描述:已知2條地鐵線路,其中A為環(huán)線,B為東西向線路,線路都是雙向的。經(jīng)過的站點名分別如下,兩條線交叉的換乘點用T1、T2表示。編寫程序,任意輸入兩個站點名稱,輸出乘坐地鐵最少需要經(jīng)過的車站數(shù)量(含輸入的起點和終點,換乘站點只計算一次)。 地鐵線A(環(huán)線)經(jīng)過車站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18 地鐵線B(直線)經(jīng)過車站:B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B15 輸入:輸入兩個不同的站名
49、 輸出:輸出最少經(jīng)過的站數(shù),含輸入的起點和終點,換乘站點只計算一次 輸入樣例:A1 A3 輸出樣例:3 答案參考: 1.import java.util.*; 2. 3. 4.public class Main 5. 6. private static int INVALID_POSITION = 255; 7. 8. class BusLine 9. String busstop; 10. String lineName; 11. 12. public BusLine(String line) 13. String stops = line.split(" "); 14. this.busstop = new Stringstop
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 稅務(wù)局2025年度環(huán)境保護與治理合同
- 2025年度出口退稅證明開具與跨境電商平臺服務(wù)合同3篇
- 2024良鄉(xiāng)校區(qū)物業(yè)管理服務(wù)合同
- 2025年度裝載機租賃與施工技術(shù)指導(dǎo)合同3篇
- 二零二四年圍欄產(chǎn)品研發(fā)與創(chuàng)新設(shè)計合同3篇
- 二零二五年度綠色通道不過戶二手房買賣合同2篇
- 2025年度新能源發(fā)電項目變壓器采購合同標準范本3篇
- 2024版跨國企業(yè)社會責(zé)任合規(guī)合同
- 二零二五版?zhèn)€人購房貸款擔(dān)保與房屋維修基金代繳代理合同3篇
- 二零二五版股權(quán)代持實務(wù)解析與合規(guī)操作合同
- 割接方案的要點、難點及采取的相應(yīng)措施
- 2025年副護士長競聘演講稿(3篇)
- 2025至2031年中國臺式燃氣灶行業(yè)投資前景及策略咨詢研究報告
- 原發(fā)性腎病綜合征護理
- (一模)株洲市2025屆高三教學(xué)質(zhì)量統(tǒng)一檢測 英語試卷
- 第三章第一節(jié)《多變的天氣》說課稿2023-2024學(xué)年人教版地理七年級上冊
- 2025年中國電科集團春季招聘高頻重點提升(共500題)附帶答案詳解
- 2025年度建筑施工現(xiàn)場安全管理合同2篇
- 建筑垃圾回收利用標準方案
- 2024年考研英語一閱讀理解80篇解析
- 樣板間合作協(xié)議
評論
0/150
提交評論