火车进栈

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();
}
全部评论

相关推荐

点赞 评论 收藏
分享
小鹏、大疆、米哈游、MinMax小鹏上午投的下午就约面,进度未免也太快了
蛇年行大运fff:哥们 盗贴有意思吗,我发xhs上的给你搬过来了😅😅😅
点赞 评论 收藏
分享
06-19 19:06
门头沟学院 Java
码农索隆:别去东软,真学不到东西,真事
点赞 评论 收藏
分享
昨天 18:05
门头沟学院 Java
挂了&nbsp;正式批求捞
投递滴滴等公司9个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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