zoukankan      html  css  js  c++  java
  • 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];  //类似于二维数组,第二维长度可以发生变化

  • 相关阅读:
    URAL 2046 A
    URAL 2056 Scholarship 水题
    Codeforces Gym 100286I iSharp 水题
    Codeforces Gym H. Hell on the Markets 贪心
    Codeforces Gym 100286G Giant Screen 水题
    Codeforces Gym 100286B Blind Walk DFS
    Codeforces Gym 100286F Problem F. Fibonacci System 数位DP
    Codeforces Gym 100286A. Aerodynamics 计算几何 求二维凸包面积
    Codeforces Gym 100418K Cards 暴力打表
    Codeforces Gym 100418J Lucky tickets 数位DP
  • 原文地址:https://www.cnblogs.com/wsruning/p/4699471.html
Copyright © 2011-2022 走看看