即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

《数据结构学习与进阶与实验指导》2-2:数组元素(element)循环右移相关疑难问题

编程语言 henuni 33℃ 0评论

实验内容:一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>0)个位置。


输入说明:第1行输入N(1<=N<=100)、M(M>=0);第2行输入N个整数。


输出说明:输出循环右移M位以后的整数序列。


测试用例:


输入 | 输出


6 2


1 2 3 4 5 6 | 5 6 1 2 3 4


6 8


1 2 3 4 5 6 | 5 6 1 2 3 4


3 6


11 23 56 | 11 23 56


1 0


8 | 8

#include 
#include 

int main(int argc, const char * argv[]) {
    int N, M;
    scanf("%d %d", &N, &M);
    M = M % N;
    int *arr = (int *) malloc(N * sizeof(int));
    for (int i = 0; i < N; i++) {
        scanf("%d", arr + i);
    }
    if (M != 0) {
        for (int i = 0; i < M; i++) {
            int t = arr[i];
            int index = i;
            do {
                arr[index] = arr[(index - M + N) % N];
                index = (index - M + N) % N;
            } while (i != index);
            arr[(i + M) % N] = t;
        }
    }
    for (int i = 0; i < N - 1; i++) {
        printf("%d ", arr[i]);
    }
    printf("%d\n", arr[N - 1]);
    free(arr);
    return 0;
}

转载请注明:CodingBlog » 《数据结构学习与进阶与实验指导》2-2:数组元素(element)循环右移相关疑难问题

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情