1. 程式人生 > 其它 >C++ error: use of deleted function

C++ error: use of deleted function

目前是一名大四的求職學生,因為找到工作了,也沒怎麼去做題,沒想到一遇到題居然一點不記得怎麼去做,因為沒學過演算法,半年前就在力扣刷了兩個月的題,今天同學遇到題問我,居然一瞬間忘記了怎麼處理,所以做題還是要堅持啊。

 

題目的大概意思是,有54張牌,每次能選1-3張,拿到最後一張牌的就算勝利,你首先拿一張,我的想法直接換成了奧數思維,思考怎麼去贏,這很簡單,但是要打印出所有可能贏的序列,在不知道策略的情況下,因為stl最近也沒怎麼看,一下子就忘記了。

那麼分析一下,很明顯需要全排列,那麼就可以用回溯來做,那麼一想簡單,就是dsp+回溯,54張牌作為遞迴的條件。

虛擬碼:

void dfsint 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 dfsint 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皇后(有點煩)。