2020 4 29華為筆試 華為校園招聘 軟體

2021-10-05 15:29:38 字數 1881 閱讀 9136

輸入樣例:abc

輸出:6

tips:如果字串為空,輸出0。

思路:類似於leetcode47題,列舉每乙個字元所在的位置。為了不重複,需要保證相同字元的相對位置不變。因此,如果後面的字元跟當前字元相同,後面的字元必須在當前字元的後面;如果不相同,隨便放。

只通過了百分之90,不知道**錯了。

#include

using

namespace std;

void

dfs(

int num,

int step, string &s,

int&cnt,vector<

int>

&jd)

for(

int i = step; i < s.

size()

;++i)

}return;}

intmain()

vector<

int>

jd(s.

size()

,0);

dfs(0,

0, s, cnt, jd)

; cout << cnt << endl;

return0;

}

輸入樣例:bacaa

1輸出:acaa

思路:遍歷這個字串,類似於冒泡演算法不斷比較相鄰的字元。如果遇到逆序對就刪掉第乙個字元,k–,然後繼續比較剩餘的字元;如果全部逆序對都刪除了k仍然大於0,就刪掉後面的剩餘字元;

如果當前列舉的字串比當前最優ans要大就不需要比較了,直接返回。這題ac

#includeusing namespace std;

void dfs(int num, int k, string m, string &ans)

int i;

for (i = num; i < m.size() - 1; ++i)

}if (i == m.size() - 1 && k > 0)

dfs(num, 0, m.erase(m.size() - k), ans);

}int main()

輸入第一行為a身上的錢;

第二行為n,表示有n座城市;

第三行表示有r條路徑;

接下來r行表示路徑的資訊:出發城市、到達城市、路徑長度、路費;

輸入樣例

567

1 2 2 4

2 4 3 3

3 4 2 4

1 3 4 1

4 6 2 1

3 5 2 0

5 4 3 2

輸出:11(1->3->5->4->6)

思路:感覺是一道floyd變體,直接暴力沒想到過了,驚訝。更新路徑的過程中比較路費,如果路費不足就不更新了,反正都不夠錢走。time也許不需要,就是多次執行floyd。這題ac

#includeusing namespace std;

int main()

while (time--)

}if (wh[1][city][0] <= ans && wh[1][city][1] <= coin)

cout << wh[1][city][0] << endl;

else

cout << -1 << endl;

return 0;

}

華為2013校園招聘上機筆試題

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

華為2016校園招聘上機筆試題

華為2016校園招聘上機筆試題 撲克牌大小 已通過測試,通過。思路 主要是將比較的左右牌,進行區分開來 首先將左右的牌轉化為字串,10 佔兩個字串,需要特殊處理 將 10 轉化為 1 這樣可以通過左右兩邊字元的個數多少進行區分 include include 定義輸出的字元陣列 char print...

華為2016校園招聘上機筆試題

老師想知道從某某同學當中,分數最高的是多少,現在請你程式設計模擬老師的詢問。當然,老師有時候需要更新某位同學的成績.思路 區間最大值,點更新。這裡是最簡單的,其實還有區間求和,區間最大值,區間最小值,點更新,區間更新。可以用線段樹 樹狀陣列 rmq 這裡只簡單說明一下區間最大值和點更新,剩餘的放在下...