1 条题解

  • 0
    @ 2023-6-11 12:18:10

    C :

    #include<stdio.h>
    int m,n,a[55],b[55];
    int main()
    {
    	scanf("%d %d",&n,&m);
    	for(int i=1;i<=n;i++)
    	scanf("%d",&a[i]);
    	for(int i=1;i<=m;i++)
    	{
    		int x;
    		scanf("%d",&x);
    		if(x==1)
    		{
    			int r,t;
    			scanf("%d %d",&r,&t);
    			int num=1;
    			for(int s=r;s<=t;s++)
    			b[num++]=a[s];
    			for(int j=1;j<=n;j++)
    			if(j<r||j>t)	b[num++]=a[j];
    			for(int j=1;j<=n;j++)
    			a[j]=b[j];
    		}
    		else
    		{
    			for(int j=1;j<=n;j++)
    			b[j]=a[j];
    			for(int j=1;j<=n;j+=2)
    			a[j]=b[j/2+1];
    			for(int j=2;j<=n;j+=2)
    			a[j]=b[j/2+n/2];
    	}
    }
    	for(int i=1;i<n;i++)
    	printf("%d ",a[i]);
    	printf("%d",a[n]);
    	return 0;
    }
    
    

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    
    int a[100],b[100];
    int i,j,n,order,x,y,m,k;
    int main() {
    	cin>>m>>n;
    	//m张牌
    	for(i = 1; i <= m; i++) {
    		cin>>a[i];
    	}
    
    	for(i = 1; i <= n; i++) {
    		cin>>order;
    		//切牌
    		if(order == 1) {
    			k = 1;//下标清零
    			cin>>x>>y;
    			for(j = x; j <= y; j++) {
    				b[k] = a[j];
    				k++;
    			}
    
    			for(j = 1; j < x; j++) {
    				b[k] = a[j];
    				k++;
    			}
    
    			for(j = y + 1; j <= m; j++) {
    				b[k] = a[j];
    				k++;
    			}
    
    			//拷贝回去
    			for(j = 1; j <= m; j++) {
    				a[j] = b[j];
    			}
    		} else {
    			for(j = 1; j <= m / 2; j++) {
    				b[j*2-1]=a[j];
    				b[j*2]=a[m/2+j];
    			}
    
    			for(j = 1; j <= m; j++) {
    				a[j] = b[j];
    			}
    		}
    	}
    
    	for(i = 1; i <= m; i++) {
    		cout<<a[i]<<" ";
    	}
    
    
    }
    
    
    
    • 1

    信息

    ID
    2480
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者