zoukankan      html  css  js  c++  java
  • nyoj93 汉诺塔(三)

     1 #include<stack>
     2 #include<iostream>
     3 using namespace std;
     4 int main()
     5 {
     6     int i,t,N,a,b,m,n;
     7     stack<int> s[4];  //定义一个数组栈 
     8     cin>>N;
     9     while(N--)
    10     {
    11         cin>>m>>n;
    12         for(i=1;i<4;i++)
    13             while(!s[i].empty()) s[i].pop(); //清空栈 
    14         for(i=m;i>0;--i) s[1].push(i);     //第一根针上的铜片入栈,大的在下 
    15         while(n--)
    16         {
    17             cin>>a>>b;
    18             if(!s[a].empty()&&(s[b].empty()||s[a].top()<s[b].top())){
    19                 t=s[a].top();   //如果a栈不空且
    20                 s[a].pop();        //b栈空或a栈顶上铜片小于b栈顶上铜片,
    21                 s[b].push(t);  //则把a栈顶铜片转移到b栈顶 
    22             }else break;
    23         }
    24         if(n+1) cout<<"illegal\n";
    25         else cout<<"legal\n";
    26     }
    27     return 0;
    28 }

    用栈模拟铜片的移动!!!

  • 相关阅读:
    [ZJOI2010]基站选址
    [SDOI2008]Sue的小球
    访问计划
    奥义商店
    codeforces 809E Surprise me!
    codeforces 888G Xor-MST
    [HAOI2015]数字串拆分
    小奇分糖果
    小奇的花园
    BZOJ4711 小奇挖矿
  • 原文地址:https://www.cnblogs.com/shihuajie/p/2628617.html
Copyright © 2011-2022 走看看