zoukankan      html  css  js  c++  java
  • STL sector 应用

     1 #include <iostream>
     2 #include <string>
     3 #include <vector>
     4 #include <cstdio>
     5 using namespace std;
     6 int n;
     7 vector<int> pile[30];
     8 
     9 //找到a所在pile和height,以应用的形式返回调用者,
    10 void find_block(int a,int &p,int &h)
    11 {
    12     for(p=0;p<n;p++)
    13         for(h=0;h<pile[p].size();h++)
    14             if(pile[p][h]==a)
    15     return ;
    16 }
    17 
    18 void clear_above(int p,int h)
    19 {
    20     for(int i=h+1;i<pile[p].size();i++)
    21     {
    22         int b=pile[p][i];
    23         pile[b].push_back(b);
    24     }
    25     pile[p].resize(h+1);
    26 }
    27 void pile_onto(int p,int h,int p2)
    28 {
    29     for(int i=h;i<pile[p].size();i++) //pile[p].size()的容量大小
    30         pile[p2].push_back(pile[p][i]);
    31     pile[p].resize(h);//pile[p]的容量改成h大小
    32 }
    33 void print()
    34 {
    35     for(int i=0;i<n;i++)
    36     {
    37         printf("%d:",i);
    38         for(int j=0;j<pile[i].size();j++)
    39             printf(" %d",pile[i][j]);
    40         printf("
    ");
    41     }
    42 }
    43     
    44 
    45 int main()
    46 {
    47     int a,b;
    48     scanf("%d",&n);
    49     string s1,s2;
    50     for(int i=0;i<n;i++)    
    51         pile[i].push_back(i);
    52     while(cin>>s1>>a>>s2>>b)
    53     {
    54         int pa,pb,ha,hb;
    55         find_block(a,pa,ha);
    56         find_block(b,pb,hb);
    57         if(pa==pb)
    58             continue;
    59         if(s2=="onto")  clear_above(pb,hb);
    60         if(s1=="move")  clear_above(pa,ha);
    61         pile_onto(pa,ha,pb);
    62         print();
    63     }
    64     
    65     return 0;
    66 }

    vector类:

    pile[p].size()看容量大小

    pile[p].resize(n)调整vector容器的大小

    pile[p].empty() 判断是否为空
    begin()和end()函数--返回第一个元素和最后一个元素位置

    front()和back()函数返回vector 中第一个元素和最后一个元素

    push_back(x)和pop_back()在vector中最后插入一个元素和删除一个元素

    vector 可以和数组一样,用下表表示
     
  • 相关阅读:
    nhibernate记事
    关于mysql数据库中,连续签到等连续日期的处理
    记IIS部署https arr urlrewrite
    mybatis Generator
    CGI
    FreedonStudio freertos 内存分配方式选择
    NB模块BC26调试记录
    调试升级程序记录
    最近做的一个嵌入式项目
    4*4键盘扫描程序--去抖加长按
  • 原文地址:https://www.cnblogs.com/WDKER/p/5471091.html
Copyright © 2011-2022 走看看