问题标题: 1743 序列变换

1
0
已解决
张睿杰
张睿杰
初级天翼
初级天翼

1743   序列变换

题目描述 Description

现有一个长度为n的序列,对这个序列进行m次操作,可以对序列进行的操作分为以下三类:

 1 i:   询问序列中第i个元素的值;

 2 i v: 在序列中第i个元素前加入新的元素v;

 3 i:   删除序列中的第i个元素。

注意:三类操作都要满足 i <= n

输入描述 Input Description

第一行:n,表示序列的初始长度 (1<=n<=1000)
第二行:n个用空格间隔的数,表示原始的整数序列
第三行:m,表示操作的次数 (1<=m<=1000)
接下来的m行分别是每次对序列进行的操作(题目描述中的三类操作中的一种)

输出描述 Output Description

对于操作 ① 输出对应的答案,一行输出一个数。

样例输入 Sample Input

 

5
6 31 23 14 5
5
1 2
2 2 7
1 2
3 3
1 3

样例输出 Sample Output

 

31
7
23

#include <iostream>
using namespace std;
int a[100001];
int main()
{
    int n,m,k,h,u;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    cin>>m;
    for(int i=1;i<=m;i++)
    {
        cin>>k>>h;
        if(k==1)
            cout<<a[h]<<endl;
        else if(k==3)
        {
            for(int j=h;j<=n-1;j++) a[j]=a[j+1];
        }
        else if(k==2)
        {
            cin>>u;
            for(int j=n+1;j>=h+1;j--) a[j]=a[j-1];
            a[h]=u;
        }
    }
}

只有40


0
已采纳
陆姗姗
陆姗姗
资深守护
资深守护
        else if(k==3)        
        {
            for(int j=h;j<=n-1;j++) a[j]=a[j+1];
        }
        else if(k==2)
        {
            cin>>u;
            for(int j=n+1;j>=h+1;j--) a[j]=a[j-1];
            a[h]=u;
        }

当k==3的时候 减少一个变量,n的值减一

当k==2的时候 增加一个变量,n的值增加一

陆姗姗在2018-01-28 16:59:00追加了内容

你这两个if条件里少了对n值处理的过程

0
我要回答