C++ vector用法积累
1. vector的初始化
2. vector基本操作
2.1 vector属性
size
resize
2.2 vector操作
- 插入
在最后插入一个元素
push_back()
- 删除
在最后删除一个元素
pop_back()
uva 101 木块问题
题目大意
输入n,得到编号为0n-1的木块,分别摆放在顺序排列编号为0n-1的位置。现对这些木块进行操作,操作分为四种。
- move a onto b:把木块a、b上的木块放回各自的原位,再把a放到b上;
- move a over b:把a上的木块放回各自的原位,再把a发到含b的堆上;
- pile a onto b:把b上的木块放回各自的原位,再把a连同a上的木块移到b上;
- pile a over b:把a连同a上木块移到含b的堆上。
当输入quit时,结束操作并输出0~n-1的位置上的木块情况
Sample Input
10
move 9 onto 1
move 8 over 1
move 7 over 1
move 6 over 1
pile 8 over 6
pile 8 over 5
move 2 over 1
move 4 over 9
quit
Sample Output
0: 0
1: 1 9 2 4
2:
3: 3
4:
5: 5 8 7 6
6:
7:
8:
9:
#include<cstdio>
#include<algorithm>
#include<vector>
#include<string>
#include<iostream>
using namespace std;
/*
move a onto b:把a和b上方的木块全部归位,然后把a放到b上方
move a over b:把a上方的木块全部归位,然后把a放到b木块所在的顶部
pile a onto b:把b上方的木块全部归位,然后把a及以上的木块整体放到b上面。
pile a over b:把a和a以上的木块全部放到b所在的木块堆的顶部。
*/
const int MAXC=30;
int n;
vector<int> pile[MAXC];
//用来查找a具体在哪个堆的,要得到两个数据,堆和高度
void find_block(int a,int& i,int& j){
for(i=0;i<n;i++){
for(j=0;j<pile[i].size();j++){
if(pile[i][j] == a)
return;
}
}
}
//清除p堆,将h层以上的木块进行归位
void clear_above(int p,int h){
for(int i=h+1;i<pile[p].size();i++){
int k=pile[p][i];
pile[k].push_back(k);
}
pile[p].resize(h+1);
}
//把第p堆高度为h及以上的木块全部堆到第p2堆的顶部
void pileon(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("\n");
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)pile[i].push_back(i);
string s1,s2;
int a,b;
while(cin>>s1){
if(s1 =="quit") break;
cin>>a>>s2>>b;
int pa,ha;//a所在的堆和高度
int pb,hb;//b所在的堆和高度
find_block(a,pa,ha);
find_block(b,pb,hb);
if(pa == pb) continue; //非法指令
if(s2 == "onto") clear_above(pb,hb);//有onto就要把b上方的木块移掉
if(s1 == "move") clear_above(pa,ha);
pileon(pa,ha,pb);
}
print();
return 0;
}
C++ vector用法积累的更多相关文章
- #include <vector>用法之我见
vector是一种顺序容器,事实上和数组差不多,但它比数组更优越.一般来说数组不能动态拓展,(何为动态拓展,即是说如果你知道你要存的数据的个数,你定义的存储数据的数组大小也就决定了,但是若你事先不知道 ...
- STL vector用法介绍
STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和f ...
- C++-STL:vector用法总结
目录 简介 用法 1. 头文件 2. vector的声明及初始化 3. vector基本操作 简介 vector,是同一类型的对象的集合,这一集合可看作可变大小的数组,是顺序容器的一种.相比于数组,应 ...
- C++ STL之vector用法总结
介绍 vector是表示可变大小数组的序列容器. 就像数组一样,vector也采用的连续存储空间来存储元素.也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效.但是又不像数组,它的大 ...
- vector用法总结(转载)
一.vector的基本概念 vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库负责管理存储元素的相关内存.我们把vector称为容器,是因为它可以包 ...
- STL源代码学习--vector用法汇总
一.容器vector 使用vector你必须包含头文件<vector>: #include<vector> 型别vector是一个定义于namespace std内的templ ...
- map set vector用法小总结
1.Map 定义 #include<map> map<string,bool> mp; 插入 mp[s]=; mp.insert(make_pair(s,)); 输出 cout ...
- c++ vector用法详解
1. 定义: 向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)可以认为是一个动态数组,其中一个vector中的所有对象都必须是同一种类型的. 2. 构造函 ...
- C++中的vector 用法解析
一.概述 vector 是C++标准模板库的部分内容,他是一个多功能的,能够操作多种 数据结构和算法 的模板类和函数库. vector 是一个容器,它能够存放各种类型的对象, ...
随机推荐
- python学习(五)--打印错误信息
from urllib import request #打印错误信息 except Exceptionlist = [ "http://www.baidu11.com/", &qu ...
- lua继承
lua中其实是没有类的,有的只是表(table) lua查找一个表元素时的规则,其实就是如下3个步骤: 1.在表中查找,如果找到,返回该元素,找不到则往下看: 2.判断该表是否有元表,如果没有元表,返 ...
- Csharp: Send Email
/// <summary> /// 發送郵件 /// 塗聚文 /// 20130816 /// </summary> /// <param name="to&q ...
- JSP数据库综合练习
一.问题概述 实现了数据库的增删改查和分页显示. 分页显示:mysql String cmd = "select * from t_user limit &q ...
- NetBeans 仿notepad++风格
一直喜欢notepad++配色跟Courier New字体.但notepad++毕竟功能有限. 改用了NetBeans,调整了下样式,终于感觉看着舒服了. 下载链接:点击下载,配置里导入就OK 风格截 ...
- spring----对IoC和DI的理解
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和 ...
- 深度剖析hdfs原理
大数据底层技术的三大基石起源于Google在2006年之前的三篇论文GFS.Map-Reduce. Bigtable,其中GFS.Map-Reduce技术直接支持了Apache Hadoop项目的诞生 ...
- webpack前言:前端模块系统的演进
前端开发和其他开发工作的主要区别,首先是前端是基于多语言.多层次的编码和组织工作,其次前端产品的交付是基于浏览器,这些资源是通过增量加载的方式运行到浏览器端,如何在开发环境组织好这些碎片化的代码和资源 ...
- python_列表/元组/元组列表以及如何使用
1.list是处理一组有序项目的数据结构 #定义一个列表 list=[1,2,3] print type(list) print list[0] 输出: <type 'list'> 1 2 ...
- 设计模式——策略模式(Strategy Pattern)
写在前面: 直接将书中的例子用来作为记录自己学习的成果,不知道这样好不好,如果给原作者带来什么不利的影响不妨告知一声,我及时删掉. UML图: 抽象策略:Strategy package com.cn ...