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