2 条题解

  • 1
    @ 2023-10-1 2:15:24

    链表初尝试

    #include<iostream>
    using namespace std;
    int a[101],t[101];
    int get(int a){
        int x=0;
        for(int i=0;i<a;i++)
        x=t[x];
        return x;
    }
    int main(){
        int n,x1,x2,y1,y2;
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>a[i];
            t[i-1]=i;
        }
        cin>>x1>>x2>>y1>>y2;
        t[x1-1]=y1;
        t[y2]=(y1-x2)==1?x1:t[x2];
        t[y1-1]=(y1-x2)==1?y2+1:x1;
        t[x2]=y2+1;
        for(int i=1;i<=n;i++)
        cout<<a[get(i)]<<" "; 
        return 0;
    }
    
    • 1
      @ 2023-7-31 15:59:27

      emmmmmmm明天就要开学了,前两天请了假你猜我去干啥啦?

      这道题的正常做法很简单,我这里提供一种手写队列的超级简单的做法

      #include<cstdio>
      using namespace std;
      int a[220];
      int n,x1,x2,x3,x4;
      struct quene{
      	int left,right;
      	int que[110000];
      	void init(){left=1;right=0;}//初始化:清空队列 
      	void push(int i){que[++right]=i;}//在队尾加入元素i 
      	void pop_left(){left++;}//弹出队首元素
      	int prileft(){return que[left];}//返回队首元素
      	int priright(){return que[right];}//返回队尾元素 
      	void push_long(int i,int j)
      	{
      		for (int k=i;k<=j;k++)
      		{
      			push(a[k]);
      		}
      	}//把a数组中下表i到j的元素入队 
      };//用结构体写一个队列 
      int main()
      {
      	quene dl;//建立一个队列 
      	scanf("%d",&n);
      	for (int i=1;i<=n;i++)
      	{
      		scanf("%d",&a[i]);
      	}
      	scanf("%d%d%d%d",&x1,&x2,&x3,&x4);
      	dl.init();//清空队列
      	bool rudui1_2=false,rudui3_4=false;//标记x1_x2,x3_x4元素均未入队 
      	for (int i=1;i<=n;i++)//循环读入的数 
      	{
      		if(!(i>=x1&&i<=x2)&&!(i>=x3&&i<=x4))//没有在调换区间 
      		{
      			dl.push(a[i]);//入队 
      		}
      		else if ((i>=x1&&i<=x2))//在x1-x2区间并且3-4未入队 
      		{
      			if (rudui3_4==false)
      			{			
      				dl.push_long(x3,x4);//将x3-x4区间元素入队 
      				rudui3_4=true; 
      			}
      			else 
      			{
      				continue;
      			}
      		} 
      		else if (rudui1_2==false)
      		{
      			dl.push_long(x1,x2);//将x1-x2区间元素入队 
      			rudui1_2=true;
      		} 
      	}
      	for (int i=1;i<=n;i++)
      	{
      		printf("%d ",dl.prileft());//输出队首元素
      		dl.pop_left();//弹出队首元素 
      	}
      	return 0;
      } 
      
      • 1

      信息

      ID
      374
      时间
      1000ms
      内存
      256MiB
      难度
      3
      标签
      递交数
      91
      已通过
      46
      上传者