PTA:自测-3 数组元素循环右移问题 (20分)
程序员文章站
2022-06-07 14:33:17
...
利用队列实现,但是有队列是先进先出和数组右移机制有些不同,所以我们他进行左移,因为他移动的位数是循环的,所以我们可以做成左移n-m位,然后每移动n位等价于没有移动,所以对n进行求余。
#include"stdio.h"
#include"math.h"
#include <cstdlib>
#include <iostream>
#include <queue>
using namespace std;
int main(){
queue<int> q;
int n,step;
int temp;
scanf("%d%d",&n,&step);
for(int i =0;i<n;i++){
temp =0;
scanf("%d",&temp);
q.push(temp);
}
for (int i=0;i<abs(n-step%n)%n;i++){
temp = q.front();
q.pop();
q.push(temp);
}
printf("%d",q.front());
q.pop();
for(int i=1;i<n;i++){
printf(" %d",q.front());
q.pop();
}
}