3 条题解

  • 4
    @ 2022-11-3 19:43:05

    链表写法

    33写的,用我电脑发表一下

    #include<bits/stdc++.h>
    using namespace std;
    int n,m;
    int x,y;
    struct Node{
    	int val,nxt;
    };
    int tot;//当前已经使用了 a[1]~a[tot] 
    int head;//当前的链表头 
    Node a[21234];
    //返回链表的第pos个元素的下标 
    int idx(int pos){
    	int nowPos=1;
    	int nowIdx=head;
    	while(nowPos!=pos){
    		nowPos++;
    		nowIdx = a[nowIdx].nxt;
    	}
    	return nowIdx;
    }
    int main()
    {
    	cin>>n;
    	for(int i=1;i<=n;i++)
    	{
    		cin>>a[i].val;
    		a[i].nxt = i+1;
    	}	
    	a[n].nxt=-1;
    	tot = n;
    	head = 1;
    	
    	cin>>m;
    	for(int i=1;i<=m;i++)
    	{
    		cin>>x>>y;
    		int xId = idx(x);
    		tot++;
    		a[tot].val=y;
    		a[tot].nxt=a[xId].nxt;
    		a[xId].nxt=tot;
    	}
    	
    	for(int i=head;i!=-1;i=a[i].nxt){
    		cout<<a[i].val<<" ";
    	}
    }
    
    
    
    • 1
      @ 2022-9-28 18:15:47

      插一个把其后的往后挪一位即可 代码如下:

      #include<bits/stdc++.h>
      using namespace std;
      int a[112345];
      int main()
      {
      	int n;
      	cin>>n;
          for(int i=1;i<=n;i++)cin>>a[i];
          int m;
          cin>>m;
          for(int i=1;i<=m;i++)
          {
          	int b,c;
          	cin>>b>>c;
          	for(int j=n;j>=b;j--)
          	{
          		a[j+1]=a[j];
      		}
      		n++;
      		a[b+1]=c;
      	}
      	for(int i=1;i<=n;i++)cout<<a[i]<<' ';
      	return 0;
      }
      
      • 0
        @ 2022-12-10 9:30:08

        一维数组基础写法

        #include<bits/stdc++.h>
        using namespace std;
        int main()
        {
        	int n,m,x,y;
        	int a[20001]; 
        	cin>>n;
        	for(int i=1;i<=n;i++)
        		cin>>a[i];
        	cin>>m;
        	for(int t=1;t<=m;t++)
        	{
        		cin>>x>>y;
        		//a[x] 的后面插入 y
        		//a[x+1]~a[n] 往后挪一位
        		for(int i=n+1;i>=x+2;i--)
        			a[i]=a[i-1];
        		/*
        		for(int i=n;i>=x+1;i--)
        			a[i+1]=a[i];
        		*/
        		//把 y 放到 a[x+1] 
        		a[x+1]=y;
        		//长度增加 1
        		n++;
        	}
        	for(int i=1;i<=n;i++)
        		cout<<a[i]<<" ";
        	cout<<"\n";
        	return 0;	
        }
        
        • 1

        信息

        ID
        1080
        时间
        1000ms
        内存
        256MiB
        难度
        4
        标签
        递交数
        161
        已通过
        76
        上传者