void ArrayShift(int a[], int n, int m) {
int arr[n],temp = 0;
if (m > n) { //当m>n时,将m>n的问题转化为m<n
m = m % n;
}
for (int i = 0; i < n; i++) {
if (i < m) {
arr[i] = a[(n-m)+i];
} else {
arr[i] = a[temp];
temp++;
}
}
for (int i = 0; i < n; i++) {
a[i] = arr[i];
}
}
1.将m>n的问题转化成m<n
2.当m<n时,可知,每轮会有m个数从最后到最前面,可知那m个数的下标是a[n-m] a[n-m+1],对他们所作的操作是a[n-m] = arr[0],a[n-m+1]=a[1],以此类推,当到达m个数后,将a[0]-a[n-m]的下标前移m位即可.