C++ 不是';这两种情况不都一样吗?

C++ 不是';这两种情况不都一样吗?,c++,algorithm,C++,Algorithm,年轻的物理学家,我正在解决这个关于合力的初级问题。 答案是找出3个力是否处于平衡状态 我已经提交了两个版本的答案。一个通过了,但一个没有。但我不明白为什么它不会通过,这两种情况不一样吗 if (sumx == 0 && sumy == 0 && sumz == 0) cout << "YES" << "\n"; else cout << "NO" << "\n"; if(sumx==0&&sumy

年轻的物理学家,我正在解决这个关于合力的初级问题。

答案是找出3个力是否处于平衡状态

我已经提交了两个版本的答案。一个通过了,但一个没有。但我不明白为什么它不会通过,这两种情况不一样吗

if (sumx == 0 && sumy == 0 && sumz == 0)
    cout << "YES" << "\n";
else
    cout << "NO" << "\n";
if(sumx==0&&sumy==0&&sumz==0)

可以考虑
sumx=-1
sumy=1
sumz=0
。对于
x+y+z=0
,有一个二维无穷多的解,
x=y=z=0
只是一个0维奇点

如果用图形表示x+y+z=0
,则会得到以下结果:


这个平面上的每个点都是三个值的集合,它们的总和为0。这三个点都为零的那一点只是海中的一个点。一个快速检查告诉你你已经过度简化了约束,你有3个变量,但只有1个等式。这意味着你仍然应该有3-1=2个自由度,但是一个点有0个自由度。

答案是否定的。当你有
sumx+sumy+sumz==0
时,并不一定意味着所有这些变量都等于0。让我们假设
sumx=-1
sumy=0
symz=1
。这:

if(sumx==0&&sumy==0&&sumz==0)

不能假定
sumx==-2
sumy==1
sumz==1
,因此这些条件不相同
if (sumx + sumy + sumz == 0)
    cout << "YES" << "\n";
else
    cout << "NO" << "\n";