📜  C++程序在右旋转K次后打印数组(1)

📅  最后修改于: 2023-12-03 14:59:52.221000             🧑  作者: Mango

C++程序在右旋转K次后打印数组

本程序是一个用C++写的右旋转K次后打印数组的程序。

程序思路

通过右旋转K次,可以将一个数组中的元素按照一定的规律移动位置,最终得到一个新的数组,根据题目要求我们需要输出这个新数组。

对于本程序,我们先输入数组元素和需要右旋转的次数K,然后进行相应的操作,输出右旋转后的新数组。

代码实现

下面是本程序的代码实现。

#include<iostream>

using namespace std;

void rightRotate(int a[], int n, int k){
    int temp[k];
    for(int i=n-k, j=0; i<n; i++,j++){
        temp[j] = a[i];
    }
    for(int i=n-k-1; i>=0; i--){
        a[i+k] = a[i];
    }
    for(int i=0; i<k; i++){
        a[i] = temp[i];
    }
}

int main(){
    int n, k;
    cout<<"Enter size of the array: ";
    cin>>n;
    int a[n];
    cout<<"Enter array elements: ";
    for(int i=0; i<n; i++){
        cin>>a[i];
    }
    cout<<"Enter number of rotations: ";
    cin>>k;
    rightRotate(a, n, k);
    cout<<"Array after "<<k<<" right rotations: ";
    for(int i=0; i<n; i++){
        cout<<a[i]<<" ";
    }
    return 0;
}
代码说明
  1. 函数 rightRotate : 右旋转函数。 参数说明: a : 输入数组序列。 n : 输入数组大小。 k : 右旋转的次数。 执行过程:

    • 将原始数组最后k个元素存到临时数组temp中;
    • 原数组前n-k个元素后移k个位置;
    • 将临时数组插入到前k个元素中即可。
  2. 主函数:

    • 首先输入数组元素和需要右旋转的次数k;
    • 调用函数 rightRotate 进行相应的操作;
    • 输出右旋转后的新数组。
运行结果

程序执行结果如下:

Enter size of the array: 5
Enter array elements: 1 2 3 4 5
Enter number of rotations: 2
Array after 2 right rotations: 4 5 1 2 3

程序成功右旋转了数组并输出了右旋转后的新数组。