2 条题解

  • 3
    @ 2023-8-31 17:30:38

    做这道题目首先得知道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
      @ 2023-8-14 16:33:42

      又是一道水题这道题我用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
      上传者