关于递归时传递数组的问题
查看原帖
关于递归时传递数组的问题
347664
菲斯斯夫斯基楼主2024/3/12 21:26

在下面的代码中 cx 和 cy 是全局变量。

在两个 if 里面 fx 和 fy 两个数组会发生改变吗?

感觉应该是不会改变的,但是输出了一下好像不一样?

求大佬解答,谢谢。

int ask(int fx[],int fy[],int l,int r,int x,int y)
{
	if(l>y||r<x||x>y)return 0;
	int mid=(l+r)/2,sum=0;
	if(x<=l&&r<=y)
	{
		for(int i=1;i<=ly;i++)
			sum+=f[fy[i]].x;
		for(int i=1;i<=lx;i++)
			sum-=f[fx[i]].x;
		return sum;
	}
	if(x<=mid)
	{
		for(int i=1;i<=ly;i++)
			cy[i]=f[fy[i]].l;
		for(int i=1;i<=lx;i++)
			cx[i]=f[fx[i]].l;
		sum+=ask(cx,cy,l,mid,x,y);
	}
	if(y>mid)
	{
		for(int i=1;i<=ly;i++)
			cy[i]=f[fy[i]].r;
		for(int i=1;i<=lx;i++)
			cx[i]=f[fx[i]].r;
		sum+=ask(cx,cy,mid+1,r,x,y);
	}
	return sum;
}
2024/3/12 21:26
加载中...