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

时间:2018-11-29 16:33:52

标签: c++

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

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

和20 15 5,因为20-15 = 5

 for (int i=0; i<maxLength; i++) {
        for (int j=i+1; j<maxLength; j++) {
            for (int v=j+1; v<maxLength; v++){

            }

我正在考虑一个三重循环,但是我不知道如何确定如何编程和输出答案

2 个答案:

答案 0 :(得分:0)

如果您询问有关标准算法,则没有任何标准算法。 IMO,您应该编写自己的算法或尝试在Google上寻求帮助。

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

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;
            }
        }
     }
}

答案 1 :(得分:0)

蛮力变体:

#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