1008 数组元素循环右移问题:
问题描述
输入样例:
6 2
1 2 3 4 5 6
输出样例:
5 6 1 2 3 4
解决方案:
#include<stdio.h>
#include<string.h>
#include<math.h>
int main(){
int n,k,flag,y,x,final;
int a[10000];
memset(a,-1,sizeof(a));
scanf("%d %d",&n,&k);
k=k%n;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
y=n;
for(int i=0;i<n;i++){
a[y-1+k]=a[y-1];
y--;
}
//数组后移
y=n;
x=k;
for(int i=n+k-1;i>=n;i--){
a[x-1]=a[i];
x--;
}
//将数组外的数字覆盖到前面(56到12)
for(final=0;final<n-1;final++){
printf("%d ",a[final]);
}
printf("%d",a[final]);
return 0;
}
收获:
这个题好像很简单,但是我做的没那么简单,谨记