
304 views
Largest subset whose all elements are Fibonacci numbers in C++
To find the largest subset of elements in a given array where all elements are Fibonacci numbers, you can use the following C++ code. This code first generates Fibonacci numbers up to a certain limit and then checks each element in the input array to determine if it’s a Fibonacci number. Finally, it finds the largest subset of Fibonacci numbers.
C++
#include <iostream>
#include <vector>
#include <unordered_set>
// Function to generate Fibonacci numbers up to a given limit
std::vector<int> generateFibonacci(int limit) {
std::vector<int> fibonacci;
int a = 0, b = 1, c = 0;
while (c <= limit) {
fibonacci.push_back(c);
a = b;
b = c;
c = a + b;
}
return fibonacci;
}
// Function to find the largest subset of Fibonacci numbers in an array
std::vector<int> largestFibonacciSubset(const std::vector<int>& arr) {
// Generate Fibonacci numbers up to the maximum element in the array
int max_element = *std::max_element(arr.begin(), arr.end());
std::vector<int> fibonacci = generateFibonacci(max_element);
// Create a set for faster lookup
std::unordered_set<int> fibonacci_set(fibonacci.begin(), fibonacci.end());
std::vector<int> result;
for (int num : arr) {
if (fibonacci_set.count(num)) {
result.push_back(num);
}
}
return result;
}
int main() {
std::vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
std::vector<int> fibonacciSubset = largestFibonacciSubset(arr);
std::cout << "Largest Fibonacci Subset: ";
for (int num : fibonacciSubset) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}In this code:
- The
generateFibonaccifunction generates Fibonacci numbers up to a given limit and stores them in a vector. - The
largestFibonacciSubsetfunction finds the largest subset of Fibonacci numbers in the input array by iterating through the array and checking if each element is in the set of generated Fibonacci numbers. - The
mainfunction demonstrates how to use these functions with an example input array. You can replace thearrvector with your own input data.
Compile and run the code to find the largest subset of Fibonacci numbers in your array.