蒟蒻求助——不知道添加操作怎么写错了
查看原帖
蒟蒻求助——不知道添加操作怎么写错了
8965
zhouty楼主2020/9/21 20:01
void update(int x)
{
	int tmp = h[x];
	if (x > N/2) return ;
	if (h[2*x+1]==0)
	{
		if (h[x] > h[2*x]) swap(h[x], h[2*x]);
		return ;
	}
	
	if (h[x] <= h[2*x] && h[x] <= h[2*x+1]) return ;
	if (h[2*x] <= h[2*x+1]) swap(h[x], h[2*x]);
	else swap(h[x], h[2*x+1]);
	update(2*x); update(2*x+1);
}
void add(int x)
{
	int tmp;
	h[++N] = x;
	for (int i = N/2; i >= 1; i--) update(i);
}

换成第一个题解的添加函数就没有问题了。。

2020/9/21 20:01
加载中...