華為上機題彙總(二十二)

2021-12-29 20:52:49 字數 3649 閱讀 3307

106.去飯店吃飯 乙個男人3元 乙個女人2元 乙個小孩1元 現輸入總人數和總花費

#include

#include

using namespace std;

void display(const vector &v)

}cout << man << " " << woman << " " << child << endl;

}void compute(int n, int sum, int now,const vector &v)

if (sum < 0 || n == 0)

for (int i = now; i <= 3; i++)

}int main()

107.字串權值

輸入兩個字串(都是字母) a到z每個字母有乙個權值(1-26)不區分大小寫哪個字母分配哪個權值由你決定 字串的權值就是字串中所有字母的權值之和。

現要求自行分配權值使得兩個字串的權值之差最大 輸出最大權值之差(提示:先把字串中的相同字母去掉,再分配權值)

#include

#include

#include

using namespace std;

void lowerstring(string &s)

}int compute(const string &s1, const string &s2)

else if (*b1 < *b2)

else

}int d1 = (int)tmp1.size() - common;

int d2 = (int)tmp2.size() - common;

int sum1 = 0, sum2 = 0;

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

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

return sum1 - sum2;

}int main()

108.m個相同蘋果放到n個相同籃子裡有多少種放法,允許有籃子不放。

1<=m<=10,1<=n<=10

例如5個蘋果三個籃子,3,1,1 和 1,1,3是同一種放法

輸入 7 3

輸出 8

#include

#include

using namespace std;

void putapple(int apple, int basket, int now, int &sum)

if (apple == 0 || basket < 0)

for (int i = now; i <= apple; i++)

}int main()

109.洞穴逃生

精靈王子愛好冒險,在一次探險歷程中,他進入了乙個神秘的山洞。在洞穴深處,精靈王子不小心觸動了洞穴內暗藏的機關,整個洞穴將很快塌陷,精靈王子必須盡快逃離洞穴。

精靈王子的跑步速度為17m/s,以這樣的速度可能是無法逃出洞穴的。慶幸的是精靈王子擁有閃爍法術,可在1s內移動60m,不過每次使用閃爍法術都會消耗魔法值10點。

精靈王子的魔法值恢復的速度為4點/s,只有處在原地休息狀態時才能恢復。

現在已知精靈王子的魔法初值m,他所在洞穴中的位置與洞穴出口之間的距離s,距離洞穴塌陷的時間t。

你的任務是寫乙個程式幫助精靈王子計算如何在最短的時間內逃離洞穴。若能逃出,輸出」yes」,並輸出逃出所用的最短時間;

若不能逃出,則輸出」no」,同時輸出精靈王子在剩下的時間內能走的最遠距離。

注意字母大小寫。注意:精靈王子跑步、閃爍或休息活動均以秒(s)為單位。且每次活動的持續時間為整數秒。距離的單位為公尺(m)。

注:m、s、t均是大於等於的整數。由輸入保證取值合法性,考生不用檢查。

提醒:如果輸入的s為,則說明本身已經在出口,輸出應為:yes 0

如果輸入的t為(且s不為),則說明已經沒有時間了,輸出應為:no 0

輸入: 輸入格式:ms

t輸出: 輸出格式:

yes 逃出洞穴所用的最短時間

或no 在洞穴塌陷前能逃跑的最遠距離

樣例輸入: 10 50 5

樣例輸出: yes 1

#include

using namespace std;

bool judge(int m, int s, int t, const int s, const int t, int &mint, int &maxs)

if (t == t && s < s)

if (m >= 10)

else

}int main()

else

return 0;

}110.建立乙個二叉樹,求其高度,並且判斷是否為平衡二叉樹

#include

using namespace std;

struct btreenode

;void insertnode(btreenode **p_root, int value)

btreenode *p = *p_root;

while (p)

else if (value < p->value)

p = p->left;

}else

p = p->right;}}

}inline int max(int a, int b)

int height(btreenode *root, bool &balance)

int left = height(root->left,balance);

int right = height(root->right,balance);

if (right - left < -1 || right - left > 1)

return max(left,right)+1;

}int main()

bool flag = true;

cout << height(root,flag);

cout << (flag ? " yes" : " no") << endl;

return 0;

}111.二叉搜尋樹的功能實現

// 二叉樹構造與節點結構同上

#include

#include

using namespace std;

struct btreenode

;void insertnode(btreenode **p_root, int value)

btreenode *p = *p_root;

while (p)

else if (value < p->value)

p = p->left;

}else

p = p->right;}}

}void display(queue &q)

cout << endl;

}bool find(btreenode *root, int n, queue q)

q.push(root->value);

if (n == root->value)

else if (n < root->value)

else

}int main()

cin >> n;

queue q;

if(!find(root,n,q)) cout << "not find" << endl;

return 0;

}

第二十二題

第二十二題 韓信點兵 在中國數學史上,廣泛流傳著乙個 韓信點兵 的故事 韓信是漢高祖劉邦手下的大將,他英勇善戰,智謀超群,為漢朝建立了卓越的功勞。據說韓信的數學水平也非常高超,他在點名的時候,為了知道有多少兵,同時又能保住軍事機密,便讓士兵排隊報數 按從1到5報數,記下最末乙個士兵報的數為1 按從1...

華為上機題彙總(五)

21.通過鍵盤輸入100以內正整數的加 減表示式,請編寫乙個程式輸出運算結果字串。輸入字串的格式為 運算元1 運算子 運算元2 運算元 與 運算子 之間以乙個空格隔開。補充說明 1.運算元為正整數,不需要考慮計算結果溢位的情況。2.若輸入算式格式錯誤,輸出結果為 0 示例輸入 4 7 輸出 11 輸...

二十二,雜感

恩,二十二了,感覺是個turning point。二十二是中國男公民法定結婚年齡,但是因為我連女朋友都沒有,所以,這個話題暫不談論。其實剛到上海的時候,就準備把那些將要發生的辛酸點滴記錄下來,可是不知怎麼的,真正到辛酸的時候,卻不想去記憶了。那些歷程確實值得懷念,但是想起來就感覺不好,或許這就是所謂...