2 条题解
-
3
做这道题目首先得知道vector是什么:
- vector是一种可以动态增长的容器,相比数组更节省空间
- vector的定义是在英文字母vector的后面加上一个中括号
vector<int> v
以上我就定义了一个int类型的vector
- 如果没用万能头那就要导入头文件:
#include<vector>
做这道题还需要知道reverse函数,它是algotithm库中自带的函数,作用是能自动将范围内的元素翻转。
思路:
1、定义一个向量v,和变量n,m,以及x和a,b
2、输入数据,用for循环读入x,将它压入v,在读入a和b,然后用reverse函数对a~b范围内的元素进行翻转
3、循环输出v中的所有元素,需要注意的是中间要用空格隔开
AC Code:
#include <bits/stdc++.h> int n, m; std::vector<int> v; //定义vector int main() { std::ios::sync_with_stdio(false); //读入加速 std::cin.tie(NULL); std::cout.tie(NULL); std::cin >> n >> m; //输入n和m; for (int i = 1, x; i <= n; i++) { std::cin >> x; // 输入数据 v.push_back(x); // 放入vector } for (int i = 1, a, b; i <= m; i++) { std::cin >> a >> b; reverse(v.begin() + a - 1, v.begin() + b); //将范围内的数字进行翻转,如果没用万能头就要导入algorithm库,求中v.begin()是获取首个元素的地址 } for (int i = 0; i < v.size(); i++) // 循环输出vector中的元素 std::cout << v[i] << " "; return 0; }
祝大家AC愉快,另外,本蒟蒻在这弱弱的求个👍
-
0
又是一道水题这道题我用STL解出来了。根本不需要vector,可以直接使用<algorithm>中的函数reverse。使用方法和sort一样。我根本想不明白为什么要用vector下面是代码:#include <iostream> #include <algorithm> //reverse的头文件 using namespace std; int n,m; int b,e; int a[1005]; int main() { cin>>n>>m; //输入就不介绍了 for(int i=1;i<=n;i++) { cin>>a[i]; } for(int i=1;i<=m;i++) { cin>>b>>e; //输入起始地址和结束地址 reverse(a+b,a+e+1); //反转 } for(int i=1;i<=n;i++) //输出 { cout<<a[i]<<" "; } return 0; }
- 1
信息
- ID
- 499
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 34
- 已通过
- 25
- 上传者