
数组循环右移——使用额外数组太麻烦,三次交换直接搞定!
发布日期:2021-05-06 03:52:55
浏览次数:27
分类:原创文章
本文共 667 字,大约阅读时间需要 2 分钟。
数组元素循环右移问题
题目
答案
#include<stdio.h>#include<algorithm>using namespace std;void Swap(int a[],int left ,int right){ for(int i=left;i<=(left+right)/2;i++) swap(a[i],a[left+right-i]);}int main(){ int n,m; scanf("%d %d",&n,&m); int a[n],i; for(i=0;i<n;i++) scanf("%d",&a[i]); m=m%n; if(m==0||n==m) { printf("%d",a[0]); for(i=1;i<n;i++) printf(" %d",a[i]); return 0; } //第一次 Swap(a,0,n-1); //第二次 Swap(a,0,m-1); //第三次 Swap(a,m,n-1); printf("%d",a[0]); for(i=1;i<n;i++) printf(" %d",a[i]);}
注意
Swap函数中的判断条件i<=(left+right)/2
里的=
要记得写
算法分析
本题只需进行三次交换就可以实现数组的循环右移
我们拿下面的例子进行说明(n=8,m=5)
8 51 2 3 4 5 6 7 8
交换过程如下(黑色数字表示不动,红色数字表示交换的数字)
就这么简单!觉得还不错的同学可以点上一个宝贵的赞,谢谢大家!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年03月12日 13时20分33秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
qtDesigner中添加QAction
2019-03-04
Java读入中文文件乱码现象的解决方案|java
2019-03-04
VS+OpenCV读取图片简单DEMO
2019-03-04
[0115ZIZI]扩展P5.js库相关链接
2019-03-04
B1008 数组元素循环右移问题 (20 分)
2019-03-04
B1022 D进制的A+B (20 分)
2019-03-04
B1021 个位数统计 (15 分)
2019-03-04
射频矩阵的应用
2019-03-04
不断发展的5G MIMO网络和虹科测试方案
2019-03-04
Photoshop基本操作(五)
2019-03-04
Y形电路与三角电路转换,网孔和节点分析法
2019-03-04
java中的字符串
2019-03-04
Java中的集合简要概括
2019-03-04
Java中的反射
2019-03-04
手写框架,模拟简易的SpringIOC
2019-03-04
Idiot 的间谍网络
2019-03-04
动态代理与SpringAOP
2019-03-04
MySql索引及使用、实现的数据结构
2019-03-04
Why Did the Cow Cross the Road I P
2019-03-04
小D的剧场
2019-03-04