有两种算法,第一种比较无脑,即把右移m位看做是循环了m位的右移一次。
注意点:
1.m=m%n,这是因为如果m大于n时,移动m和m%n起到的效果是一样的。
2.用temp存储会被覆盖的那个数组元素。
c++代码如下:
#includeusing namespace std; void rotates(int *a,int n,int m) { int i,j,k,temp; m=m%n; if(m==0) return; else { for(i=0;i =1;j--) { a[j]=a[j-1]; } a[0]=temp; } } } int main() { int n,m,i,a[101]; cin>>n>>m; for(i=0;i >a[i]; rotates(a,n,m); for(i=0;i 第二种算法:假如要移动m位,则把整个数组分为两部分:一部分长m,一部分长n-m,然后让这两个数组各自逆转,最后再把这两个数组看做整体逆转。代码不给出。



