橙子皮


私信TA

用户名:dotcpp0781431

访问量:13

签 名:

等  级
排  名 10470
经  验 1089
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 华北水利水电大学
专  业

  自我简介:

解题思路:
每次移动一位
注意事项:
时间复杂度比较高  算法效率不高 比较好理解
参考代码:

#include <stdio.h>

#include <stdlib.h>

#include <errno.h>


void Move(int arr[], int n, int x) {

//n是数组的个数 x是要移动x位置

int i = 0;

int j = 0;

//x是题目中的2 循环两次 每次移动一位

for (i = 0; i < x; i++) {

    int temp = arr[n-1]; //记录最后一位

    for (j = n-2; j >= 0; j--) {

        arr[j + 1] = arr[j]; 

    }

    arr[0] = temp;

}

}

int main() {

int n;

int x;

scanf("%d", &n);

int *arr = (int*)malloc(n * sizeof(int));

if (arr == NULL) {

    perror(errno);//如果未分配成功就报错

}

int i = 0;

for (i = 0; i < n; i++) {

    scanf("%d", &arr[i]);

}

scanf("%d", &x);


Move(arr, n, x);


for (i = 0; i < n; i++) {

    printf("%d ", arr[i]);

}


free(arr); //释放分配的内存

arr = NULL;

return 0;

}



 

0.0分

0 人评分

  评论区

  • «
  • »