C++ 如何检查数组中从另一个元素减去的元素是否等于第三个元素

C++ 如何检查数组中从另一个元素减去的元素是否等于第三个元素,c++,C++,在上面的数组中打印输出 15-10-5因为15-10=5 因为20-15=5 int values[] = {5, 10, 15, 20}; for(inti=0;i如果你问这个问题,没有任何标准算法。我认为你应该编写自己的算法,或者尝试在谷歌上寻求帮助 我的第一个简单想法(肯定不是最优的) std::vector value={5,10,15,20}; 对于(自动优先=值。开始();第一次

在上面的数组中打印输出
15-10-5因为15-10=5

因为20-15=5

int values[] = {5, 10, 15, 20};

for(inti=0;i如果你问这个问题,没有任何标准算法。我认为你应该编写自己的算法,或者尝试在谷歌上寻求帮助

我的第一个简单想法(肯定不是最优的)

std::vector value={5,10,15,20};
对于(自动优先=值。开始();第一次<值。结束();+第一次){
对于(自动秒=值。开始();秒<值。结束();+秒){
如果(第一个!=第二个){
对于(自动结果=值。开始();结果<值。结束();+结果){
如果(结果!=第一个结果!=第二个结果==*第一个-*第二个)
返回true;
}
}
}
}
蛮力变体:

std::vector<int> values = {5, 10, 15, 20};

for(auto first = values.begin(); first < values.end(); ++first){
    for(auto second = values.begin(); second < values.end(); ++second) {
        if(first != second) {
            for(auto result = values.begin(); result < values.end(); ++result) {
                if(result != first && result != second && *result == *first - *second) 
                    return true;
            }
        }
     }
}

提示:使用一个帮助函数,测试给定值是否属于数组。您知道如何从数组中获取值吗?您可以考虑的第一个优化是不要多次检查同一个数字。
std::vector<int> values = {5, 10, 15, 20};

for(auto first = values.begin(); first < values.end(); ++first){
    for(auto second = values.begin(); second < values.end(); ++second) {
        if(first != second) {
            for(auto result = values.begin(); result < values.end(); ++result) {
                if(result != first && result != second && *result == *first - *second) 
                    return true;
            }
        }
     }
}
#include <iostream>

int main() {
    int values[] = {5, 10, 15, 20};
    for(const auto& a : values) {
        for(const auto& b : values) {
            if(&b==&a) continue; // skip if we have the same element in a and b
            for(const auto& x : values) {
                if(&x==&a || &x==&b) continue; // skip if x is the same element as either a or b
                if(a-b==x) std::cout << a << "-" << b << "=" << x << "\n";
            }
        }
    }
}
15-5=10
15-10=5
20-5=15
20-15=5