题目
思路:
- 题目理解:类似于汇报语言的ROR函数实现
- 难点在于:不允许使用另外数组,数据移动次数尽量少
- 一开始思路是新建中间变量temp=最末位,之后累次移动一位,再将temp赋值首位。共进行m次。
- 实现起来较麻烦,就参考了算法笔记的做法,书上这种做法简直就是偷懒(但真香)
//这种做法关键在于判断,m不一定小于n! - 测试点的问题:一开始我用
int n,m;
int a[n];
来定义数组。但测试点5一直报错。
改用a[200]正确,猜测是测试点5的n为1。但还是没想明白为什么会出错。
AC代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
int a[200];
cin>>n>>m;
m=m%n;
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int j=n-m;j<n;j++){
cout<<a[j]<<' ';
}
for (int i=0;i<n-m-1;i++){
cout<<a[i]<<" ";
}
cout<<a[n-m-1];
return 0;
}