輸入樣例: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 這裡只簡單說明一下區間最大值和點更新,剩餘的放在下...