華為機試較難的題目

2021-06-27 15:27:08 字數 3016 閱讀 6409

問題描述: 

在計算機中,由於處理器位寬限制,只能處理有限精度的十進位制整數加減法,比如在32位寬處理器計算機中,

參與運算的運算元和結果必須在-231~231-1之間。如果需要進行更大範圍的十進位制整數加法,需要使用特殊

的方式實現,比如使用字串儲存運算元和結果,採取逐位運算的方式。如下:

9876543210 + 1234567890 = ?

讓字串 num1="9876543210",字串 num2="1234567890",結果儲存在字串 result = "11111111100"。

-9876543210 + (-1234567890) = ?

讓字串 num1="-9876543210",字串 num2="-1234567890",結果儲存在字串 result = "-11111111100"。

要求程式設計實現上述高精度的十進位制加法。

要求實現函式: 

void add (const char *num1, const char *num2, char *result)

【輸入】num1:字串形式運算元1,如果運算元為負,則num1[0]為符號位'-'

num2:字串形式運算元2,如果運算元為負,則num2[0]為符號位'-'

【輸出】result:儲存加法計算結果字串,如果結果為負,則result[0]為符號位。

注:i、   當輸入為正數時,'+'不會出現在輸入字串中;當輸入為負數時,'-'會出現在輸入字串中,且一定在輸入字串最左邊位置;

ii、  輸入字串所有位均代表有效數字,即不存在由'0'開始的輸入字串,比如"0012", "-0012"不會出現;

iii、 要求輸出字串所有位均為有效數字,結果為正或0時'+'不出現在輸出字串,結果為負時輸出字串最左邊位置為'-'。

#include#includeusing namespace std;

int compare(string &num1,string &num2);

string &add(string &num1,string &num2,string &result);

string &minu(string &num1,string &num2,string &result);

int main()

else if((num1[0]!='-'&&num2[0]=='-')||(num1[0]=='-'&&num2[0]!='-'))

else if(m==1)

minu(num1,num2,result);

else

result.push_back('0');

} else

add(num1,num2,result);

coutreturn 1;

else

return 3; }}

string &add(string &num1,string &num2,string &result)

else

} if(m1>m2)

else

} }else if(m1==m2)

else

else

} }int n=temp.size();

char c;

for(int i=0;im2)

else

}} int n=temp.size();

char c;

for(int i=0;iword maze 是乙個網路小遊戲,你需要找到以字母標註的食物,但要求以給定單詞字母的順序吃掉。如上圖,假設給定單詞if,你必須先吃掉i然後才能吃掉f。 

但現在你的任務可沒有這麼簡單,你現在

處於乙個(n×m的矩陣)當中,裡面到

處都是以字母標註的食物,但你只能吃掉能連成給定單詞w的食物。 

如下圖,指定w為「solo」,則在地圖中紅

色標註了單詞「solo」。 

注意區分英文本母大小寫,你只能上下左右行走。

執行時間限制:  無限制

記憶體限制:  無限制

輸入:輸入第一行包含兩個整數n、m(0

輸出:如果能在地圖中連成給定的單詞,則輸出「yes」,否則輸出「no」。注意:每個字母只能用一次。

樣例輸入:

5 5solo

cpucy

eklqh

crsol

eklqo

pgrbc

樣例輸出:yes 

#include#include#includeusing namespace std;

void search(char **p,bool **visit,const string &w,int pos,int n,int m,int s,int e);

int main()

for(int i=0;i=0&&visit[s-1][e]==false&&p[s-1][e]==w[pos])

if(e-1>=0&&visit[s][e-1]==false&&p[s][e-1]==w[pos])

if(s+1將

**號碼

one two 

。。。nine zero

翻譯成1  2 

。。9 0

中間會有double

例如輸入:onetwothree

輸出:123

輸入:onetwodoubletwo

輸出:1222

輸入:1two2 

輸出:error

輸入:doubledoubletwo 

輸出:error

第三題:有空格,非法字元,兩個double

相連,double

位於最後乙個單詞 都錯誤

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

int main()

else if(arraylist.size()::iterator iter = arraylist.end();

arraylist.insert(iter,users[i]);

} else

} cout<

華為 2013校招機試的題目 string的題目

通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串過濾程式,若字串中出現多個相同的字元,將非首次出現的字元過濾掉。比如字串 abacacde 過濾結果為 abcde 要求實現函式 void stringfilter const char pinputstr,long linputlen,c...

華為機試整理

include stdafx.h includeusing namespace std int main int argc,tchar argv cout 2.大數相加 用stl的string比較方便,如下,自己測了幾組資料沒有什麼問題。include stdafx.h include includ...

華為機試 2013

1.字串轉換 問題描述 將輸入的字串 字串僅包含小寫字母 a 到 z 按照如下規則,迴圈轉換後輸出 a b,b c,y z,z a 若輸入的字串連續出現兩個字母相同時,後乙個字母需要連續轉換2次。例如 aa 轉換為 bc,zz 轉換為 ab 當連續相同字母超過兩個時,第三個出現的字母按第一次出現算。...