有n个整数使其个数向后移m个位置最后m个数变为最前面m个数
时间: 2024-05-07 12:21:34 浏览: 21
假设给定的n个整数为a1,a2,...,an,要求将其向后移动m个位置,即将最后m个数移动到最前面。
可以按照以下步骤进行:
1. 将最后m个数存储在一个临时数组temp中。
2. 将原数组中的前n-m个数向后移动m个位置,即将a1,a2,...,an-m移动到a1+m,a2+m,...,an中。
3. 将temp中的m个数复制到原数组的前m个位置,即将temp[0],temp[1],...,temp[m-1]复制到a1,a2,...,am中。
代码示例:
```C++
#include <iostream>
using namespace std;
void move(int arr[], int n, int m) {
int temp[m];
// 将最后m个数存储在temp数组中
for (int i = n-m; i < n; i++) {
temp[i-(n-m)] = arr[i];
}
// 将前n-m个数向后移动m个位置
for (int i = n-m-1; i >= 0; i--) {
arr[i+m] = arr[i];
}
// 将temp中的m个数复制到前m个位置
for (int i = 0; i < m; i++) {
arr[i] = temp[i];
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7};
int n = 7;
int m = 3;
move(arr, n, m);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}
```
输出结果为:4 5 6 1 2 3 7