• UVA


    5.2.2不定长数组vector

    1.vector就是一个不定长数组。不仅如此,它把一些常用操作”封装“在vector类型内部。例如,若a是一个vector,可以用a.size()读取它的大小,a.resize()改变大小,a.push_back()向尾部添加元素,a.pop_back()删除最后一个元素,a.clear()清空,a.empty测试是否为空。

    2.vector是一个模板类,所以需要用vector<int>a这样的方式来声明一个vector。vector<int>是一个类似于Int a[]的整数数组

    #include<cstdio>
    #include<string>
    #include<vector> 
    #include<iostream>
    using namespace std;
    
    const int maxn = 30;
    int n;
    vector<int>pile[maxn];//每个pile[i]是一个vector
    
    //找木块a所在的pile和height,以引用的形式返回调用者
    void find_block(int a,int& p,int& h){
    	for(p=0;p<n;p++)
    	   for(h=0;h<pile[p].size();h++)
    	      if(pile[p][h] == a) return;
    }
    
    //把第p堆高度为h的木块上方的所有木块移回原位
    void clear_above(int p,int h){
    	for(int i=h+1;i<pile[p].size();i++){
    		int b = pile[p][i];
    		pile[b].push_back(b);//把木块b放回原位 
    	}
    	pile[p].resize(h+1);//pile只应保留0~h的元素 
    } 
    //把第p堆高度为h及其上方的木块整体移动到p2堆的顶部
    void pile_onto(int p,int h,int p2){
    	for(int i = h;i<pile[p].size();i++)
    		pile[p2].push_back(pile[p][i]);
    		pile[p].resize(h);
    }
    
    void print(){
    	for(int i = 0;i<n;i++){
    		printf("%d:",i);
    		for(int j = 0;j<pile[i].size();j++)
    		printf(" %d",pile[i][j]);
    		printf("
    ");
    	}
    }
    
    int main(){
    	int a,b;
    	cin>>n;
    	string s1,s2;
    	for(int i=0;i<n;i++)
    	pile[i].push_back(i);
    	while(cin>>s1&&s1!="quit"&&cin>>a>>s2>>b){
    		int pa,pb,ha,hb;
    		find_block(a,pa,ha);
    		find_block(b,pb,hb);
    		if(pa == pb) continue;//非法指令
    		if(s2=="onto") clear_above(pb,hb);
    		if(s1=="move") clear_above(pa,ha);
    		pile_onto(pa,ha,pb);
    	}
    	print();
    	return 0;
    } 
    

      

  • 相关阅读:
    jquery直接操作元素的方式
    ie6下,给a添加事件,如果事件中有http请求,将会无效
    一个Tahoma字体bug引发的思考—关于样式bug的分析流程
    用弧度画圆
    【译】OWIN: Open Web Server Interface for .NET
    【译】Dependency Injection with Autofac
    Asp.net Identity身份与权限体系设计
    winform 数据(双向)绑定 快速更新实体
    泛型与非泛型的区别。
    使用XmlReader读Xml
  • 原文地址:https://www.cnblogs.com/lsj2020/p/5797016.html
Copyright © 2020-2023  润新知