uva 101 vector+函数设计

2023-11-15

vector   c++中封装好的类  头文件<vector>     是线性表的顺序表示   简单而又实用   推荐掌握哦!

Vectors 包含着一系列连续存储的元素,其行为和数组类似。访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线性时间复杂度

Constructors 构造函数
Operators 对vector进行赋值或比较
assign() 对Vector中的元素赋值
at() 返回指定位置的元素
back() 返回最末一个元素
begin() 返回第一个元素的迭代器
capacity() 返回vector所能容纳的元素数量(在不重新分配内存的情况下)
clear() 清空所有元素
empty() 判断Vector是否为空(返回true时为空)
end() 返回最末元素的迭代器(译注:实指向最末元素的下一个位置)
erase() 删除指定元素
front() 返回第一个元素
get_allocator() 返回vector的内存分配器
insert() 插入元素到Vector中
max_size() 返回Vector所能容纳元素的最大数量(上限)
pop_back() 移除最后一个元素
push_back() 在Vector最后添加一个元素
rbegin() 返回Vector尾部的逆迭代器
rend() 返回Vector起始的逆迭代器
reserve() 设置Vector最小的元素容纳数量
resize() 改变Vector元素数量的大小
size() 返回Vector元素数量的大小
swap() 交换两个Vector

101这道题输入中有4个命令,一般我们会一个函数实现一个命令,但是我们仔细观察思考后会发现这4个命令有很大的相似性,所以我们把他们相似的部分抽象出来作为函数,首先是这两个函数:复原(归位)  移动。   然后还需要找到某个数字在哪个Blocks中哪个地方,把这个做成一个函数。

函数这个东西就像是我们为了完成一个任务而造工具,这些工具应该各不相同并且都非常有用才对。

我们在设计程序时应该花一些时间想想需要写哪些函数,而不是一股脑的想到什么函数就去写什么函数,这样往往花的时间多,效率低。

#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
const int maxn=30;
vector<int>amount[maxn];
int n;
void find(int wood,int &a,int &h)
{
 for(a=0;a<n;a++)
 for(h=0;h<amount[a].size();h++)
 if(amount[a][h]==wood)return;
}
void recover(int b,int h)
{
 int box;
 for(int i=h+1;i<amount[b].size();i++)
 {
  box=amount[b][i];
  amount[box].push_back(box);
 }
 amount[b].resize(h+1);
}
void print()
{
 for(int i=0;i<n;i++)
 {
  cout<<i<<":";
  for(int j=0;j<amount[i].size();j++)
  {
   cout<<' '<<amount[i][j];
  }
  cout<<"\n";
 }
}
void move(int b1,int b2,int h1)
{
 for(int i=h1;i<amount[b1].size();i++)
 {
  amount[b2].push_back(amount[b1][i]);
 }
 amount[b1].resize(h1);
}
int main()
{
 int w1,w2,b1,b2,h1,h2;
 string s1,s2;
 //freopen("input.txt","r",stdin);//不删了我就等死吧!!!
 for(int i=0;i<maxn;i++)
 {
  amount[i].push_back(i);
 }
 cin>>n;
 while(cin>>s1>>w1>>s2>>w2)
 {
  //if(s1=="quit")break;      //这个可以不写 quit代表流结束了 自然while循环就终止了
  find(w1,b1,h1);
  find(w2,b2,h2);
  if(b1==b2)continue;
  if(s1=="move")recover(b1,h1);
  if(s2=="onto")recover(b2,h2);
  move(b1,b2,h1);
 }
 print();
 return 0;
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

uva 101 vector+函数设计 的相关文章

  • 【Python】剑指offer 14:剪绳子

    题目 给你一根长度为n的绳子 请把绳子剪成m段 m和n都是整数 n gt 1并且m gt 1 每段绳子的长度记为k 0 k 1 k m 请问k 0 k 1 k m 可能的最大乘积是多少 例如 当绳子的长度为8时 我们把它剪成长度分别为2 3
  • 蓝桥杯——我该如何枚举

    文章目录 一 枚举 1 前言 2 枚举模板 二 例题分析 1 四平方和 1 题目描述 2 题目分析 3 代码实现 2 纯质数 1 题目描述 2 题目分析 3 代码实现 3 回文日期 1 题目描述 2 题目分析 3 代码实现 一 枚举 1 前
  • 算法刷题【一本通YbtOJ1488】新的开始

    异想之旅 本人原创博客完全手敲 绝对非搬运 全网不可能有重复 本人无团队 仅为技术爱好者进行分享 所有内容不牵扯广告 本人所有文章仅在CSDN 掘金和个人博客 一定是异想之旅域名 发布 除此之外全部是盗文 先说句题外话 这个标题我很喜欢 种
  • 蓝桥杯2022真题:统计子矩阵、字符统计、排列字母、顺子日期、特殊时间、三角回文数、2022、星期计算

    目录 1 统计子矩阵 2 字符统计 3 排列字母 4 顺子日期 5 特殊时间 6 三角回文数 7 2022 8 星期计算 1 统计子矩阵 import os import sys 请在此输入您的代码 n m k map int input
  • HDU1874 单源最短路经 dijkstra或者floyd

    include
  • Leetcode 88:合并两个有序数组

    题目描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2 另有两个整数 m 和 n 分别表示 nums1 和 nums2 中的元素数目 请你 合并 nums2 到 nums1 中 使合并后的数组同样按 非递减顺序 排列
  • 蓝桥BASIC-18 矩形面积交 思路分析

    问题描述 平面上有两个矩形 它们的边平行于直角坐标系的X轴或Y轴 对于每个矩形 我们给出它的一对相对顶点的坐标 请你编程算出两个矩形的交的面积 输入格式 输入仅包含两行 每行描述一个矩形 在每行中 给出矩形的一对相对顶点的坐标 每个点的坐标
  • leetcode刷题:加一

    题目描述 给定一个由整数组成的非空数组所表示的非负整数 在该数的基础上加一 最高位数字存放在数组的首位 数组中的每个元素只存储单个数字 你可以假设除了整数0之外 这个整数不会以零开头 示例 输入 digits 1 2 3 输出 1 2 4
  • 代码随想录算法训练营第二十七天| 131.分割回文串

    131 分割回文串 本题较难 大家先看视频来理解 分割问题 明天还会有一道分割问题 先打打基础 代码随想录 视频讲解 带你学透回溯算法 分割回文串 对应力扣题目 131 分割回文串 回溯法精讲 哔哩哔哩 bilibili List
  • 代码随想录算法训练营第一天

    数组理论基础 文章链接 代码随想录 记忆 数组是存放在连续内存空间上的相同类型数据的集合 数组下标都是从0开始的 数组内存空间的地址是连续的 数组的元素是不能删的 只能覆盖 在C 中二维数组是连续分布的 像Java是没有指针的 同时也不对程
  • 02.07_两个链表相交

    给你两个单链表的头节点 headA 和 headB 请你找出并返回两个单链表相交的起始节点 如果两个链表没有交点 返回 null 解法一 如果两个链表有相交 那么从后面看一定是相同的 所以只需要把长的移动到和短的链表一样的长度开始遍历即可
  • leetcode刷题(9.24总结)

    1 相交链表 题目描述 https leetcode cn problems intersection of two linked lists class Solution def getIntersectionNode self head
  • 蓝桥杯 BEGIN-2 long long int的使用

    include
  • leetcode刷题(8.13总结)

    1 有效的括号 题目描述 https leetcode cn problems valid parentheses class Solution def isValid self s str gt bool stack count 0 if
  • leetcode刷题(10.15总结)

    1 2的幂 题目描述 https leetcode cn problems power of two class Solution def isPowerOfTwo self n int gt bool return n gt 0 and
  • 【leetcode算法】02-两数之和

    目录 1 题目描述 2 解题思路 第一种解法 暴力枚举 第二种解法 哈希映射 3 代码展示 4 小结 前言 声明 本文仅为学习记录 图片以及题目资源来自牛客和力扣网 如有侵权请联系删除 大家好 我是尼根 一个又菜又想学算法的准程序猿 今天为
  • HDU-2000

    题目本身不难 但是对于初学者 难的是数据的读入 方法一 使用getchar 去除每一行的空格符 include
  • PTA L2-008 最长对称子串 (25 分) 字符串处理

    暴力循环 从j处向左右延伸 对称就继续延伸 注意 对称有两种 abccba abcba include
  • 正则表达式匹配中* . c++实现

    题目描述 请实现一个函数用来匹配包括 和 的正则表达式 模式中的字符 表示任意一个字符 而 表示它前面的字符可以出现任意次 包含0次 在本题中 匹配是指字符串的所有字符匹配整个模式 例如 字符串 aaa 与模式 a a 和 ab ac a
  • 代码随想录算法训练营第二十四天|理论基础 77. 组合

    理论基础 其实在讲解二叉树的时候 就给大家介绍过回溯 这次正式开启回溯算法 大家可以先看视频 对回溯算法有一个整体的了解 题目链接 文章讲解 代码随想录 视频讲解 带你学透回溯算法 理论篇 回溯法精讲 哔哩哔哩 bilibili 77 组合

随机推荐

  • DevOps系列之 —— 持续开发与集成(五)华为云 DevCloud 代码托管服务及 CloudIDE

    DevOps系列之 DevOps概览 一 软件产业和交付模式发展趋势 DevOps系列之 DevOps概览 二 新型软件技术及交付模式 DevOps系列之 DevOps概览 三 DevCloud HE2E DevOps 框架及其主要服务 D
  • Linux基本指令(ls、pwd、cd、touch、mkdir、rmdir、rm、man、cp、mv、cat、tac、more、less)

    在Linux中文件后缀与文件类型无关 一 ls 功能 对于目录 该命令列出该目录下的所有子目录与文件 对于文件 将列出文件名以及其他信息 1 ls a 列出目录下的所有文件 包括以 开头的隐含文件 目录 ls 与ls a 以 开头是隐藏文件
  • could not create the java virtual machine

    今天早上突然打开不了myeclipse eclipse 每次启动都报错 could not create the java virtual machine 开始以为是java虚拟机出了问题 于是卸了重装还是出现如此问题 接着到网上查找相关资
  • 酒店评论情感分析,亲妈级教程

    酒店评论情感分析 采集与分词篇 开篇吐槽一下下 类似携程这种生活类网站 还有电商类网站 不是驻守被爬的城墙内就是在反爬的道路上行走 不断的更新加密 批量化的采集不断破解并升级程式 并在网络之上布施教程 小白们熬夜拼命的学习 做一个流水线般的
  • Linux Shell函数返回值

    Shell函数返回值 一般有3种方式 return argv echo 1 return 语句 shell函数的返回值 可以和其他语言的返回值一样 通过return语句返回 示例 bin bash function mytest echo
  • PyTorch模型导出到ONNX文件示例(LeNet-5)

    从PyTorch模型导出到ONNX文件是通过调用PyTorch的torch onnx export接口实现 torch onnx export 如果pytorch模型既不是torch jit ScriptModule也不是orch jit
  • shiro反序列化漏洞Shiro-550/Shiro-721反序列化

    文章目录 shiro反序列化漏洞 Shiro 550反序列化漏洞 CVE 2016 4437 漏洞简介 漏洞原理 Shiro 721反序列化漏洞 CVE 2019 12422 Shiro550和Shiro721的区别是什么 漏洞指纹 漏洞介
  • postman-常见问题解决方案记录

    1 Response body Containing string为中文 Response body Containing string 为中文时 转换为unicode编码 并添加转义符 2 get方式与post请求使用环境变量 post方
  • ctfshow web2

    ctfshow web2 writeup 这是本人第一次写blog 有不好的地方希望大家多多指出 从此开始踏上了网安的不归路 成为了一只web狗 从题目可以看出这是一道sql注入的题 示例 pandas 是基于NumPy 的一种工具 该工具
  • 看懂Oracle执行计划

    略有所知 也来总结一下自己最近所学 不定时更新ing 一 什么是Oracle执行计划 执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述 二 怎样查看Oracle执行计划 PLSQL远程连接的公司数据库 所以以PLSQL为例
  • Webots安装和教程推荐

    安装与推荐 软件介绍 Webots是一款专业的物理仿真软件 被广泛运用在机器人 智能车仿真实践控制算法中 2018年12月该软件宣布开源 Webots最初采用C进行编程 至今已经实现提供C C Python Java Matlab接口的AP
  • JS setAttribute()方法:设置元素的属性值

    在 JavaScript 中 使用元素的 setAttribute 方法可以设置元素的属性值 用法如下 setAttribute name value 参数 name 和 value 分别表示属性名称和属性值 属性名和属性值必须以字符串的形
  • 用户政策和隐私协议

    杭州宜果送信息科技有限公司 以下简称 宜果送 重视用户的隐私 宜果送隐私政策 更新日期 2022年1月18日 提示条款 您的信任对我们非常重要 我们深知个人信息对您的重要性 我们将按法律法规要求 采取相应安全保护措施 尽力保护您的个人信息安
  • 隔离式栅极驱动器输入级对电机驱动应用的影响

    介绍 在电机驱动应用中为功率级选择隔离式栅极驱动器时 您有多种选择 栅极驱动器可简单可复杂 具有集成米勒箝位 分离输出或绝缘栅双极晶体管 IGBT 发射极的欠压 UVLO 锁定参考等功能 输入级有两个选项 电压输入级或电流输入级 在本文中
  • Visual Studio问题汇总

    合并两个vs解决方案 不能 下载别人的vs程序易出现sdk不符合等问题 项目右键属性 目标版本平台 平台工具集 都改为自己已有的就行了 还要注意配置和平台对应哦 1 问题 Callback 模板 从属名称的使用必须以模板为前缀 解决 项目右
  • 大一Python期末复习笔记

    目录 前言 一 输出格式控制 多行输出 不换行输出 精度保留和对齐 format f 二 嵌套 嵌套循环 for while 嵌套列表 字典 三 列表与字符串 添加元素 切片访问与逆序 join count find index 删除与替换
  • js闭包——简单例子

    闭包 当内部函数被保存到外部时 将生成闭包 闭包会导致原有的作用域链不释放 造成内存泄漏 如下两个例子 function test var tmp 100 function a console log tmp return a 把里面的函数
  • 4.Vue3计算属性computed实现原理

    computed实现原理 computed特性 computed可以传入一个函数 也可以传入一个对象 带有get和set方法 计算属性返回一个计算值 该值通过value属性访问 当参与计算的数据发生改变 则重新计算 不发生改变 则直接返回之
  • el-popover 样式修改

    el popover 样式修改 通过popper class绑定自定义类名popperOptions 注意popperOptions需放在样式的根文件中 原始样式 更改后的样式
  • uva 101 vector+函数设计

    vector c 中封装好的类 头文件