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++){
}
我正在考虑一个三重循环,但是我不知道如何确定如何编程和输出答案
答案 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