旋转阵列

时间:2018-07-22 13:33:22

标签: c++

这是C ++代码,我认为它是正确的,但是它不起作用。

我会解释一下以便理解

t-尝试次数。
n-数组的大小。
k-转数。

输入:1 2 3 4 5

对于k=2,输出:4 5 1 2 3

请提供相同的建议。

#include<iostream>

using namespace std;

int main() {
    int t,n,k;
    cin >> t;
    int s = 0;
    int a[1000];
    int b[1000];
    for (int i = 0; i < t; i++) {
        cin >> n;  //TAKING IN THE NUMBER OF ELEMENTS.
        cin >> k;  // TAKING IN AMOUNT OF ROTATION.
        for (int j = 0; j < n; j++) {
            cin >> a[j];  //READING ARRAY.
            cout << " ";
        }
        for (int y = 0; y < n; y++) {
            b[y + k] = a[y];  // REARRANGING ARRAY.
            if (y + k >= n) {
                b[s] = a[y];
                s++;
            }
            cout << b[y] << " "; // SHOWING ARRAY.
        }
    }
    return 0;
}

1 个答案:

答案 0 :(得分:0)

您的代码存在问题,

{Wood:2, Stone:1}

您必须将其从for循环中删除,因为您要尝试打印未给定值的内容。例如,首先y = 0,您设置了b [y + 2]但打印了b [y]尚未设置。

对于t> 1,您将看到的另一个问题是s的初始化已从main中完成,即仅首次运行时为0。

最终代码为

#include

cout<<b[y]<<" "; // SHOWING ARRAY.