1008 数组元素循环右移问题
发布日期:2022-04-07 05:22:43 浏览次数:17 分类:技术文章

本文共 929 字,大约阅读时间需要 3 分钟。

在这里插入图片描述

1008 数组元素循环右移问题

题目描述


在这里插入图片描述

解题思路

本题方法较多,博主就讲一个做法。

首先题目要求是不能使用另一个数组。
我们每次都右移一个数字,在右移的开始前,先保存最右边的数字,然后进行覆盖,最后把保存的数字再覆盖给首元素,这是第一次右移。后面的每一次都是这样实现的,可以递归实现。

在这里插入图片描述
还有一个思路:1.全部逆序,2.前面n个逆序,剩余后面的逆序。
读者自己实现一下,用库函数更简单一些

代码

#include 
   
    #include 
    
     #include 
     
      void f(int* arr,int m,int n){
   
      
int temp = arr[m-1];
int i = 0;
if (n == 0)
return;
for (i = m; i >0; i--)//从后往前覆盖
{    
arr[i-1] = arr[i -2];
}
arr[0] = temp;//让最后一个回到第一个位置
f(arr, m, n-1);//下一次右移}int main(){    
int m, n;
scanf("%d%d", &m, &n);
int* arr = (int*)malloc(m * sizeof(int));
assert(arr);
int i = 0;
for (i = 0; i < m; i++)
{    
scanf("%d", arr + i);
}
f(arr,m, n);
for (i = 0; i < m; i++)
{    
printf("%d", arr[i]);
if (i != m - 1)
printf(" ");
}
free(arr);
arr = NULL;
return 0;}

在这里插入图片描述

转载地址:https://blog.csdn.net/m0_60598323/article/details/123820150 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:1009 说反话
下一篇:1007 素数对猜想

发表评论

最新留言

逛到本站,mark一下
[***.67.29.164]2022年10月03日 03时49分42秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

最新文章