• STL之vector UVa101


      1 #include <iostream>
      2 #include <cstring>
      3 #include <cstdio>
      4 #include <algorithm>
      5 #include <vector>
      6 
      7 using namespace std;
      8 
      9 vector<int> arr[30];
     10 int x,y,n;
     11 void find_blocks(int w)
     12 {
     13     for(x=0;x<n;x++)
     14     {
     15         for(y=0;y<arr[x].size();y++)
     16         {
     17             if(arr[x][y]==w)
     18                 return ;
     19         }
     20     }
     21 }
     22 
     23 void guiwei(int w)
     24 {
     25     find_blocks(w);
     26     for(int i=arr[x].size()-1;i>y;i--)
     27     {
     28         arr[arr[x][i]].push_back(arr[x][i]);
     29         arr[x].pop_back();
     30     }
     31 }
     32 
     33 void yidong(int w,int r)
     34 {
     35     find_blocks(r);
     36     int tmpx=x;
     37     find_blocks(w);
     38     for(int i=y;i<arr[x].size();i++)
     39     {
     40         arr[tmpx].push_back(arr[x][i]);
     41     }
     42     int tt=arr[x].size();
     43     for(int i=y;i<tt;i++)
     44     {
     45         arr[x].pop_back();
     46     }
     47 }
     48 
     49 int main()
     50 {
     51     cin>>n;
     52     for(int i=0;i<n;i++)
     53     {
     54         arr[i].push_back(i);
     55     }
     56     string a,c;
     57     int b,d;
     58     while(cin>>a&&a!="quit")
     59     {
     60         cin>>b>>c>>d;
     61         find_blocks(b);
     62         int tmpx=x;
     63         find_blocks(d);
     64         if(x==tmpx)
     65             continue;
     66         if(a=="move")
     67         {
     68             guiwei(b);
     69             int v=arr[x][y];
     70             arr[x].pop_back();
     71             if(c=="onto")
     72             {
     73                 guiwei(d);
     74             }
     75             else if(c=="over")
     76             {
     77                 find_blocks(d);
     78             }
     79             arr[x].push_back(v);
     80         }
     81         else if(a=="pile")
     82         {
     83             if(c=="onto")
     84             {
     85                 guiwei(d);
     86                 yidong(b,d);
     87             }
     88             else if(c=="over")
     89             {
     90                 yidong(b,d);
     91             }
     92         }
     93     }
     94     for(int i=0;i<n;i++)
     95     {
     96         cout<<i<<":";
     97         for(int t=0;t<arr[i].size();t++)
     98         {
     99             cout<<" "<<arr[i][t];
    100         }
    101         cout<<endl;
    102     }
    103     return 0;
    104 }
    View Code

    vector

    vector可以理解为可变长度的数组

    可用函数

    size();  //返回大小

    resize();  //重新定义大小

    push_back();  //在最后插入一个元素

    pop_back();  //在最后删除一个元素

    erase(arr.begin()+n);  //删除第n+1个元素

    erase(arr.begin(),arr.begin()+3);  //删除前三个元素

    clear();  //清空

    empty();  //判断是否为空

    insert(it,2,300);  //在it位置上插入2个300,it为vector<int>::iterator it

    vector<int> arr[100];  //类似于二维数组,第二维长度可以发生变化

  • 相关阅读:
    关于hql执行带有case when 的语句问题,另:数据表的倒置
    xslt 转换 xml
    xsd校验xml
    java 调用存储过程
    js return无效,表单自动提交
    bat 启动java程序
    Delphi 窗体拖动,无边框,透明的设置
    installshield实例(三)发布,补丁,升级
    Installshield实例(二)创建自定义界面
    InstallShield 实例(一)检测JDK,MYSQL,创建数据库
  • 原文地址:https://www.cnblogs.com/wsruning/p/4699471.html
Copyright © 2020-2023  润新知