【发布时间】:2016-05-13 04:23:05
【问题描述】:
代码运行正确,它完成了它应该做的事情,但有人告诉我,我可以改用布尔表达式来加快速度,但我不知道在哪里插入它们。问题是:
给定n个点及其坐标的序列,编写一个程序remote,它计算一个点的最小距离值,该点在正方形之外。如果一个点既不在正方形内部,也不属于正方形轮廓,则该点位于正方形之外。如果正方形外没有点,你的程序必须输出 0。
约束:
1 ≤ n ≤ 10000 和 1 ≤ a ≤ 1000 ;
示例:输入: 5 4
1 2
4 6
-3 2
-2 2
4 -1
输出: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;
}
【问题讨论】:
-
附加信息:在平面上,给出一个边长为 a 且中心位于坐标系原点的正方形。边平行于坐标轴。我们称给定点的“远程性”,即点坐标绝对值的总和。例如坐标为(2,-3)的点的距离为5。
-
您的代码看起来正在尝试找到最大的远程位置,而您的要求要求找到最小的位置。
-
如需改进工作代码请在SE Code Review询问。
-
signomi,我现在还在现场 :)
-
每个人都不知何故开始了。我建议那些因为这个问题(否决票)而指责 23ElCalente 的人看看他们的旧问题。他表现出努力并寻求帮助。 To πάντα ῥεῖ:现在有很多关于堆栈交换的讨论。但是对于许多人来说,stackoverflow 仍然是与编程相关的主要讨论。
标签: c++ algorithm optimization min