为什么这题开O2会WA?
查看原帖
为什么这题开O2会WA?
728458
lht20090314楼主2022/11/5 22:13

C++14,本来开了O2,结果全WA,检查了半天没有问题,然后把O2关掉就可以了。请问这题为什么开O2过不了?

代码:

#include <iostream>
// #include <cstdio>
using namespace std;

int main()
{
	int v[22][22][22], w, x, h, q, x1, x2, y1, y2, z1, z2, ans;
	cin >> w >> x >> h >> q;
	for (int i = 1; i <= w; i++)  // 如果for循环里面是 for、if这些语句但占用了不止一行也可以不加大括号
		for (int j = 1; j <= x; j++)
			for (int k = 1; k <= h; k++)
				v[i][j][k] = 1;  // 先把三维数组的每个位置赋值为 1
	while (q--)
	{
		cin >> x1 >> y1 >> z1 >> x2 >> y2 >> z2;
		for (int i = x1; i <= x2; i++)
			for (int j = y1; j <= y2; j++)
				for (int k = z1; k <= z2; k++)
					v[i][j][k] = 0;  // 对每个操作,把删除的小方块所对应的数组位置赋值为 0
	}
	for (int i = 1; i <= w; i++)
		for (int j = 1; j <= x; j++)
			for (int k = 1; k <= h; k++)
				ans += v[i][j][k];  // 所有操作之后,对每个小方块看一下是 1 还是 0,计算答案
	cout << ans << endl;
	
	return 0;
}
2022/11/5 22:13
加载中...