返回题目问答
讨论 / 题目问答/ 帖子详情

请问为什么报段错误o.0?

写了半天老是报 段错误
VS没报错,洛谷也AC了,请问怎么个事o.0?

struct plane
{
	int arrive;
	int dead;
	int land;
}pl [11];
int n, flag;
bitset<11> bs;

void bfs(int time, int index)
{
	if (index == n)
	{
		flag = 1;
		return ;
	}

	for (int i = 0;i<n;i++)
	{
		if (bs[i])
			continue;

		//失败条件:当前飞机的到达加盘旋时间超出了当前时间
		if (time > pl[i].arrive + pl[i].dead)
		{
			return ;
		}

		//记录当前时间
		int tmp = time;
		time = max(time, pl[i].arrive) + pl[i].land;

		bs[i] = 1;
		bfs(time, index + 1);

		bs[i] = 0;
		//失败回溯时间
		time = tmp;
	}
}

int main()
{
	int T;
	cin >> T;
	while (T--)
	{
		bs.reset();
		flag = 0;
		cin >> n;
		for (int i = 0; i < n; i++)
		{
			scanf("%d %d %d", &pl[i].arrive, &pl[i].dead, &pl[i].land);
		}

		bfs(0, 0);
		if (flag)
			cout << "YES" << endl;
		else
			cout << "NO" << endl;
	}
	return 0;
}
0 回复 0 转发 0 喜欢 16 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!