给定一个正整数数组检查数组中是否存在满足规则的数组组合
题目描述
给定一个正整数数组,检查数组中是否存在满足规则的数字组合
规则:A = B + 2C
输入描述
第一行输出数组的元素个数。
接下来一行输出所有数组元素,用空格隔开。
输出描述
如果存在满足要求的数,在同一行里依次输出规则里A/B/C的取值,用空格隔开。
如果不存在,输出0。
备注
- 数组长度在3-100之间。
- 数组成员为0-65535,数组成员可以重复,但每个成员只能在结果算式中使用一次。如:数组成员为[0, 0, 1, 5],0出现2次是允许的,但结果0 = 0 + 2 * 0是不允许的,因为算式中使用了3个0。
- 用例保证每组数字里最多只有一组符合要求的解。
用例
| 输入 | 4 2 7 3 0 |
|---|---|
| 输出 | 7 3 2 |
| 说明 | 7 = 3 + 2 * 2 |
| 输入 | 3 1 1 1 |
|---|---|
| 输出 | 0 |
| 说明 | 找不到满足条件的组合 |
C++源码
#include <iostream>
#include <vector>
using namespace std;
void func(const std::vector<int>& vec)
{
for (int i = 0; i < vec.size(); i++)
{
for (int j = 0; j < vec.size(); j++)
{
if (j == i) continue;
for (int k = 0; k < vec.size(); k++)
{
if (k == i || k == j) continue;
if (vec[i] == vec[j] + vec[k] * 2)
{
std::cout << vec[i] << " " << vec[j] << " " << vec[k] << std::endl;
return;
}
}
}
}
std::cout << 0 << std::endl;
}
int main()
{
int num;
cin >> num;
std::vector<int>vec(num);
for (int i = 0; i < num; i++) {
cin >> vec[i];
}
func(vec);
return 0;
}