gpt4 book ai didi

c++ - 有人可以告诉我任何不同的方法来使这段代码更快吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:56:29 24 4
gpt4 key购买 nike

代码运行正确,它做了它应该做的事情,但我被告知我可以通过使用 bool 表达式来加快它的速度,但我真的不知道在哪里插入它们。问题是:

Given a sequence of n points with their coordinates, write a program remote, which calculates the value of the smallest remoteness of a point, which is outside the square. A point is outside the square, if it is neither inner to the square, nor belongs to square contour. If there are no points outside the square, your program has to output 0.

Constraints:
1 ≤ n ≤ 10000 and 1 ≤ a ≤ 1000 ;
Example:

Input: 5 4
1 2
4 6
-3 2
-2 2
4 -1
Output: 5

有人可以建议我任何使代码更高效的技术吗?

int remote(int x, int y) {
int z = abs(x) + abs(y);
return z;
}

int main() {

int n, a;
int x;
int y;

cin >> n >> a;

int z=20001;
for (int i = 1; i <= n; i++) {
cin >> x >> y;
if (x > a / 2 || y > a / 2) {
if (z > remote(x, y)) {
z = remote(x, y);
}
}
}
cout << z <<endl;

return 0;

}

最佳答案

首先,您不必要地调用了 remote 两次(在某些情况下)。考虑使用这个:

#include <algorithm>

z = std::max(z, remote(x, y));

这也将缩短和阐明代码。


此外,除法可能很慢。尝试(分析后!)替换

x > a / 2 || y > a / 2

通过

(x << 1) > a || (y << 1) > a

注意 @Donnie 和其他人在评论中声称编译器将进行后者优化,他们可能是正确的。

关于c++ - 有人可以告诉我任何不同的方法来使这段代码更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35186074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com