C++ error: use of deleted function
目前是一名大四的求職學生,因為找到工作了,也沒怎麼去做題,沒想到一遇到題居然一點不記得怎麼去做,因為沒學過演算法,半年前就在力扣刷了兩個月的題,今天同學遇到題問我,居然一瞬間忘記了怎麼處理,所以做題還是要堅持啊。
題目的大概意思是,有54張牌,每次能選1-3張,拿到最後一張牌的就算勝利,你首先拿一張,我的想法直接換成了奧數思維,思考怎麼去贏,這很簡單,但是要打印出所有可能贏的序列,在不知道策略的情況下,因為stl最近也沒怎麼看,一下子就忘記了。
那麼分析一下,很明顯需要全排列,那麼就可以用回溯來做,那麼一想簡單,就是dsp+回溯,54張牌作為遞迴的條件。
虛擬碼:
void dfs(int x; int n; vector<int> path
If(n<0)
return;
else if(n==0){
If(x%2){
res.push_back(path)
}
}
for(int i=0; i<3; i++) {
path.push_back(i);
dfs(x+1, n-1, path);
path.pop_back();
}
}
x記錄遞迴次數,奇數為勝利,將數列記錄。
回溯的題做過也不少,基本就是帶入回溯的模板,具體的條件在處理
void dfs(int start, vector<int> &num, vector<int> &track
//到達臨界條件
If(num.size() == track.size()) {
res.push_back(track);
return;
}
for(int i=start; i<n; i++) {
track.push_back(i);
dfs(i, nums, track);
track.pop_back();
}
}
力扣經典題,電話號碼的組合,全排列,N皇后(有點煩)。