火车进栈

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

相关推荐

这是什么操作什么意思,这公司我服了...
斯派克spark:意思是有比你更便宜的牛马了
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
Twilight_m...:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 18:05
哈哈哈哈哈感觉朋友找工作的已经疯掉了,直接上图
码农索隆:真老板娘:“我嘞个去,这不我当年的套路吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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