蓝桥杯备考——二维坐标点移动(deque容器的运用)

一.题目

二.样例分析

题目所述的(1)(2)(3)是算一次,而K=2是指要将(1)(2)(3)执行两遍后输入结果。

对于(1)步骤的结果:

[]  1  2

[]  30  40

[]   10  20

对于(2)步骤的结果:

[]  1  2

3  30  40

50  10  20

对于(3)步骤的结果:

30 1 2

3 30 40

50 10 20

我们可以分析一下结果和一开始的显示:

把该二维数组展示成一维数组的样子:

1 2 3 30 40 50 10 20 30

最后的结果是:

30 1 2 3 30 40 50 10 20

发现没有,其实就是一个循环数组,那我们就可以用个deque

三.deque容器概念

参考:STL教程(五):C++ STL常用容器之deque - 知乎 (zhihu.com)

C++ STL deque容器(详解版) (biancheng.net)

四.代码

#include<bits/stdc++.h> 

using namespace std;

int main( )
{
    int n,m;
    cin>>n>>m;
    deque<int> a(n*m);
    for(int i=0;i<n*m;i++) cin>>a[i];
    int k;
    cin>>k;
    k%=n*m;
    for(int i=0;i<k;i++){
        a.push_front(a.back());
        a.pop_back();
    }
    for(int i=0;i<n*m;){
        cout<<a[i]<<" ";
        i+=1;
        if(i%m==0) cout<<endl;
    }
    return 0;
}

  • 15
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值