首页 > 编程语言 > 详细

1008 数组元素循环右移问题

时间:2020-02-15 16:18:46      阅读:64      评论:0      收藏:0      [点我收藏+]

给定6个元素:1 2 3 4 5 6

要求循环右移2次,结果:5 6 1 2 3 4.

思路:

首先对1 2 3 4取反,结果:4 3 2 1 5 6

然后对5  6取反,结果 :4 3 2 1 6 5,

最后全部取反,结果:5 6 1 2 3 4.即为所求。

注意点,如果元素个数n 小于 要求循环右移次数 m,注意对m取模 :m = m%n;

#include"iostream"
#include"algorithm"
using namespace std;

int a[200] = {0};
int main() {
    int n,m;
    cin>>n>>m;
    for(int i = 0 ; i < n; ++i)
        cin>>a[i];
    m%=n; //如果循环右移次数m大于元素个数n,必须m mod n,否则测试点1,2无法通过
    if(m != 0) {
        reverse(a,a+n-m);
        reverse(a+n-m,a+n);
        reverse(a,a+n);
    }
    for(int i = 0; i < n; ++i) {
        cout<<a[i];
        if(i < n-1)
            cout<<" ";
    }
    return 0;
}

 

 

1008 数组元素循环右移问题

原文:https://www.cnblogs.com/keep23456/p/12312176.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!