PTA:自测-3 数组元素循环右移问题 (20分)

PTA:自测-3 数组元素循环右移问题 (20分)_第1张图片
利用队列实现,但是有队列是先进先出和数组右移机制有些不同,所以我们他进行左移,因为他移动的位数是循环的,所以我们可以做成左移n-m位,然后每移动n位等价于没有移动,所以对n进行求余。

#include"stdio.h"
#include"math.h"
#include 
#include 
#include 

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();
	}
	
	
}

你可能感兴趣的:(oj,c语言,c++)