大家能康康吗,蟹。没明白哪里有问题?

img


哪里的问题呀?差分不是这样做的吗?

  • #include
    #include
    #include
    using namespace std;
    int mian()
    {
    int N,Q;
    scanf("%d %d",&N,&Q);
    int a[]={0};
    int i=1;
    while(i<=N)
    {
      a[0]=0;
      a[N+1]=0;
      scanf("%d",&a[i]);
      i++;
    
    }
    int b[]={0};
    int j=1;
    while(j<=N)
    {
      b[0]=a[0];
      b[N+1]=a[N+1];
      b[j]=a[j]-a[j-1];
      j++;
    
    }
    int l,r,x;
    for(i=1;i<=Q;i++)
    {
      scanf("%d %d %d",&l,&r,&x);
      b[l-1]=b[l-1]+x;
      b[r+1]=b[r+1]+x;
    
    }
    for(i=1;i<=N;i++)
    {
      a[i]=b[i]+a[i-1];
      printf("%d",&a[i]);
    
    }
    return 0;
    }

1.执行后面一坨之前,先打印N和Q的值,你的scanf里有空格,很可能输入的时候格式就不对,没能正确赋值
2.数组a没有长度
3.数组b同样没有长度
4.不明白哪里有问题就断点跟,看每一步是不是符合你自己的设想,不要整个的瞎猜