对于本题,如果直接模拟,每次操作都会让数组所有的元素更替位置,麻烦!
所以我们直接定义一个变量,标记数组的输出位置,这样我们只要知道所有操作后该从什么位置开始输出,就能AC了。
#include<stdio.h>
int n,m,b,p;//p标记数组输出位置
char a;
int ar[10005];
int main()
{
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++){
scanf("%d",&ar[i]);
}
for(int i=0;i<m;i++){
scanf("\n%c %d",&a,&b);
if(a=='r')p-=b;//数组往右移动,相当于标记往左移,所以-=
else p+=b;//数组往左移动,相当于标记往右移,所以+=
}
while(p<0)p+=n;//保证p标记在数组下标范围内
p%=n;//保证p标记在数组下标范围内
for(int i=p,cnt=0;cnt<n;i++,cnt++){//cnt记录输出个数
if(i>=n)i%=n;
printf("%d ",ar[i]);
}
return 0;
}