C++ STD :: MAX像STD :: Min
注意:这是针对问题的 teleportation> teleportation 来自usaco.org(from usaco.org)奇怪的变量名称,显然我不是
在尝试使用内置的最大值(2,8)时,而出于某种原因,我得到了2个。我还创建了这样的功能:
#define min(number_1, number_2) (number_1 < number_2 ? number_1 : number_2)
#define max(number_1, number_2) (number_1 < number_2 ? number_2 : number_1)
但是它仍然失败。这是代码:
#include <iostream>
#include <string>
using namespace std;
#define min(number_1, number_2) (number_1 < number_2 ? number_1 : number_2)
#define max(number_1, number_2) (number_1 < number_2 ? number_2 : number_1)
int main() {
int start_position, end_position;
int teleportation_start_position, teleportation_end_position;
cin >> start_position >> end_position >> teleportation_start_position >> teleportation_end_position;
cout << start_position << " " << end_position << " " << teleportation_start_position << " " << teleportation_end_position << "\n";
start_position = min(start_position, end_position);
end_position = max(start_position, end_position);
teleportation_start_position = min(teleportation_start_position, teleportation_end_position);
teleportation_end_position = max(teleportation_start_position, teleportation_end_position);
cout << start_position << " " << end_position << " " << teleportation_start_position << " " << teleportation_end_position << "\n";
}
我得到的输入
3 10 8 2
我明白了
3 10 8 2
3 10 2 2
为什么是2 2?
当我删除定义的内容(#define)时,它仍然不起作用。 我只插入了代码段。
注意#2:我是新手的C ++,主要是Pythonic习惯。
注意#3:不良习惯是因为这是竞争性的编程。
Note: This is for the problem teleportation from usaco.org (hence the strange variable names, I'm obviously not making an actual teleporter)
When I try using the built-in max for (2, 8), and I get 2 for some reason. I also created my own functions like this:
#define min(number_1, number_2) (number_1 < number_2 ? number_1 : number_2)
#define max(number_1, number_2) (number_1 < number_2 ? number_2 : number_1)
but it still fails. Here is the code:
#include <iostream>
#include <string>
using namespace std;
#define min(number_1, number_2) (number_1 < number_2 ? number_1 : number_2)
#define max(number_1, number_2) (number_1 < number_2 ? number_2 : number_1)
int main() {
int start_position, end_position;
int teleportation_start_position, teleportation_end_position;
cin >> start_position >> end_position >> teleportation_start_position >> teleportation_end_position;
cout << start_position << " " << end_position << " " << teleportation_start_position << " " << teleportation_end_position << "\n";
start_position = min(start_position, end_position);
end_position = max(start_position, end_position);
teleportation_start_position = min(teleportation_start_position, teleportation_end_position);
teleportation_end_position = max(teleportation_start_position, teleportation_end_position);
cout << start_position << " " << end_position << " " << teleportation_start_position << " " << teleportation_end_position << "\n";
}
And I get with the input of
3 10 8 2
I get
3 10 8 2
3 10 2 2
Why is it 2 2?
It still doesn't work when I delete the things I defined (#define).
I only inserted a code snippet.
Note #2: I'm new to c++ with mostly pythonic habits.
Note #3: The bad habits are because this is competitive programming.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
错误是您正在重复使用
teleportation_start_position
变量。在此行之前,程序的状态为:
teleportation_start_position
= 8teleportation_end_position
= 2 = 2但之后,它是:
teleportation_start_position
= 2,所以在下一行中您要做:
The error is that you are re-using the
teleportation_start_position
variable.Before this line the state of your program is:
teleportation_start_position
= 8teleportation_end_position
= 2But after, it is:
teleportation_start_position
= 2teleportation_end_position
= 2So in the next line you are doing: