zoukankan      html  css  js  c++  java
  • B -- POJ 1208 The Blocks Problem

    参考:https://blog.csdn.net/yxz8102/article/details/53098575

    https://www.cnblogs.com/tanjuntao/p/8678927.html

      1 #include <iostream>
      2 #include <cstdio>
      3 #include <vector>
      4 #define N 30
      5 using namespace std;
      6 int n,a,b;
      7 string s,sa;
      8 vector<int> v[N];
      9 void init()
     10 {
     11     int i;
     12     for (i=0;i<N;i++)
     13     {
     14         v[i].clear();
     15         v[i].push_back(i);
     16     }
     17 }
     18 void test()
     19 {
     20     cout<<s<<a<<sa<<b<<endl;
     21 }
     22 bool judge(int& ba,int& bb,int& ha,int& hb)//判断输入合法性 ,地址传参 
     23 {
     24     int i,j;
     25     for (i=0;i<n;i++)
     26     {
     27         for (j=0;j<v[i].size();j++)
     28         {
     29             if (v[i][j]==a)
     30             {
     31                 ba=i;
     32                 ha=j;
     33             }
     34             if (v[i][j]==b)
     35             {
     36                 bb=i;
     37                 hb=j;
     38             }
     39         }
     40     }
     41     if (ba==bb)
     42     {
     43         return true;
     44     }
     45     else
     46     {
     47         return false;
     48     }
     49 }
     50 void clear(int block,int high)
     51 {
     52     int i;
     53     for (i=high+1;i<v[block].size();i++)
     54     {
     55         int t=v[block][i];
     56         v[t].push_back(t);
     57     }
     58     v[block].resize(high+1);
     59 }
     60 void pile(int pba,int pbb,int pha,int phb)
     61 {
     62     int i;
     63     for (i=pha;i<v[pba].size();i++)
     64     {
     65         v[pbb].push_back(v[pba][i]);
     66     }
     67     v[pba].resize(pha);//重设长度会删除后面元素~ 
     68 }
     69 void show()
     70 {
     71     int i;
     72     for (i=0;i<n;i++)
     73     {
     74         printf("%d:",i);
     75         for (int j=0;j<v[i].size();j++)
     76         {
     77             printf(" %d",v[i][j]);//依据方便实用printf,cout!!! 
     78         }
     79         printf("
    ");
     80     }
     81 }
     82 int main()
     83 {
     84     while (scanf("%d",&n)!=EOF)
     85     {
     86         int i;
     87         init();
     88         while (cin>>s)
     89         {
     90             if (s=="quit")
     91             {
     92                 break;
     93             }
     94             cin>>a>>sa>>b;
     95             int ba,bb,ha,hb;//ba为a的堆,ha为a在堆的高度 
     96             if (judge(ba,bb,ha,hb))//多用传参形式,少用全局变量!!! 
     97             {
     98                 continue;
     99             }
    100             if (s=="move")
    101             {
    102                 clear(ba,ha);
    103             }
    104             if (sa=="onto")
    105             {
    106                 clear(bb,hb);
    107             }
    108             pile(ba,bb,ha,hb);
    109         }
    110         show();
    111     }
    112     
    113     return 0;
    114 }
  • 相关阅读:
    JavaScript脚本学习
    PE文件结构 (转贴)
    Squid 代理服务器 编译源码 伪造HTTP_X_FORWARDED_FOR 请求头
    设置win2003远程桌面允许2个以上会话
    2003远程桌面声音问题
    AS3正则表达式
    Visual Studio技巧之打造拥有自己标识的代码模板
    如何重建sql数据库索引
    多线程系列(转)
    时间差
  • 原文地址:https://www.cnblogs.com/hemeiwolong/p/9377058.html
Copyright © 2011-2022 走看看