文章
10
粉丝
165
获赞
7
访问
25.7k
#include <stdio.h>
int a[1002];
void init(){//初始化扑克牌数组
for(int i=0;i<1002;i++){
a[i]=i;
}
}
//数组a[] = 0123456.....
void reverse(int left,int right){//右减去左+1为数组串长度
//翻转函数,第一个和最后一个换,第二个和倒数第二个换123456变成654321
int temp;
for(int i=0;i<(right-left+1)/2;i++){
temp = a[left+i];
a[left+i]=a[right-i];
a[right-i] = temp;
}
}
void shift(int n,int x){//用三次reverse实现交换后面和前面的数
reverse(1,x);
reverse(x+1, n);
reverse(1,n);
}
void flip(int n){//翻转,将前一半数翻转,分成两种情况,一个是偶数n/2,一个是奇数(n-1)/2
if(n%2==0){
reverse(1,n/2);
}
else{
reverse(1,(n-1)/2);
}
}
int main(){
int n,k,p;
while(scanf("%d %d",&n,&k)!=EOF){
init();
if(n==0){
break;
}
for(int j=0;j<k;j++){
scanf("%d",&p);
shift(n, p);
flip(n);
}
for(int i=1;i<=n;i++){
printf("%d "...
登录后发布评论
暂无评论,来抢沙发