PAT_乙_1008

数组元素循环右移问题 (20分)

思想就是把数组整个倒序,然后以移位操作数(m%n)为分割,对前半部分数组和后半部分数组分别倒序
需要考虑移位操作数大于数组长度的情况,取余就行了

#include "stdio.h"
void reverse(int arr[],int start,int end)
{
	int temp,i,j;
	for(i=start,j=end;start<end;start++,end--)
	{
		temp=arr[start];
		arr[start]=arr[end];
		arr[end]=temp;
	}
}
int main()
{
	int n,m;
	scanf("%d%d",&n,&m);
	int a[n];
	for(int i=0;i<n;i++)
	scanf("%d",&a[i]);
	m=m%n;
	reverse(a,0,n-1);
	reverse(a,0,m-1);
	reverse(a,m,n-1);
	for(int i=0;i<n;i++)
	{
		printf("%d",a[i]);
		if(i!=n-1)
		printf(" ");
	}
return 0;
}
发布了24 篇原创文章 · 获赞 2 · 访问量 386

猜你喜欢

转载自blog.csdn.net/yyp1998/article/details/105220801
今日推荐