火车进栈

using namespace std;
int n, cnt = 20;
vector<int>st3;
stack<int>st2;
int st1 = 1;
void dfs()
{
  if(!cnt)return ;
  if(st3.size() == n ) // 1
  {
          cout << "1\n" ; 
      cnt --;
      for(auto x : st3)cout << x;
      cout << endl;
      
  }
  if(st2.size()) // 2
  {
          cout << "2->" ; 
    st3.push_back(st2.top());
    st2.pop();
    dfs();
    
    st2.push(st3.back());
    st3.pop_back();
  }
  if(st1 <= n){ // 3 
  cout << "3->" ; 
    st2.push(st1);
    st1 ++;
    dfs();
    
    st2.pop();//恢复现场是在回溯的时候用的
    st1 --;//在第二步dfs回溯后,会改变父节点的st2和st1
  }

}
int main()
{
  cin >> n;
  dfs();
}
全部评论

相关推荐

zzzzhz:兄弟你先猛猛投简历至少三百家,能约到面试就去面。最近可以速成智能小车,智慧家居烂大街的项目,不需要自己写,只需要把里面的代码讲解看明白就行。把其中涉及到的八股文都拿出来单独背一下,我去年找工作就一个智能小车智慧家居找了10k差不多。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务