这道题目看了网上的二维数组懂了,但是我自己写的把而未转化为一维为什么就不对呢?求高手指教啊
#include<iostream>
//#include<vector>
using namespace std;
int V[1024*1024];
int S,A,B,L,R,T,X,Y;
int lowbit(int x)
{
return x&(x^(x-1));
}
void plus(int pos,int num)
{
while(pos<=S*S)
{
V[pos]+=num;
pos+=lowbit(pos);
}
}
int sum(int end)
{
int sum=0;
while(end>0)
{
sum+=V[end];
end-=lowbit(end);
}
return sum;
}
int main()
{
int ins;
while(1)
{
scanf("%d",&ins);
if(ins==3)
break;
switch(ins)
{
case 0:scanf("%d",&S);
memset(V,0,sizeof(V));
// V.clear();
break;
case 1:scanf("%d%d%d",&X,&Y,&A);
X++;Y++;
plus((X-1)*S+Y,A);
break;
case 2:scanf("%d%d%d%d",&L,&B,&R,&T);
L++;B++;R++;T++;
printf("%d/n",sum((R-1)*S+T)-sum((L-1)*S+B-1));
break;
case 3:break;
}
}
return 0;
}