题目:
输入样例:
6 2
1 2 3 4 5 6
输出样例:
5 6 1 2 3 4
分析:
循环右移有两种办法:
1、数组中的每个数直接移动M位,这样对移到翻头的数字处理比较复杂。
2、每次只移动一位,循环M次。这样只需每个数后移,最后一位保存到第一位即可。
移一位有两种办法:从前往后,从后往前。有什么区别呢?
①从前往后,每次都需保存前一位数字在temp中,否则前一位就是前前一位,即都保存的是第一位数字(易错点)。未达到移动目的。
②从后往前,只需保存最后一位,直接后移即可。这样比较简单快速。
代码:
#include<iostream>
using namespace std;
int main() {
int all,move,temp;
cin>>all>>move;
int num[all];
for(int i=0;i<all;i++){
cin>>num[i];
}
for(int i=0;i<move;i++){ //循环move次,每个循环右移一位
temp=num[all-1];
for(int j=all-1;j>0;j--) //后一位保存前一位
{
num[j]=num[j-1];
}
num[0]=temp; //第一位保存最后一位
}
for(int i=0;i<all-1;i++){
cout<<num[i]<<" ";
}
cout<<num[all-1];
}