描述
有n个整数,使前面各数字顺序向后移动m个位置,最后m个数变成最前面m个数,见图8.43。
写一个函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。
输入
输入为单组测试数据。
首先输入两个整数n和m(0 < n <= 1e5,0 <= m <=1e5)。
然后输入n个整数,表示要移动的数。
输出
输出各数字顺序向后移动m个位置后的序列,数字之间用空格隔开。
输入样例 1
6 2
1 3 6 7 9 8
输出样例 1
9 8 1 3 6 7
题目要求把后数移动到前数,再把其他数推移,这里可以使用两个数组,一个存储原来的数据,一个存储移动后的数据,最后输出移动后的数据即可。
//1019
#include <iostream>
using namespace std;
int main()
{
int m,n;
cin>>n>>m;
int a[n],b[n]={};
for(int i=0; i<n; i++)
cin>>a[i];
for(int i=0; i<n; i++)
{
if(i<m-1)
{
for(int j=m; j>0; j--)
{
b[i]=a[n-j];
i++;
}
}
b[i]=a[i-m];
}
for(int i=0; i<n; i++)
cout<<b[i]<<" ";
cout<<endl;
return 0;
}