MÜLAKAT SORUSU - 1 //.. /* 3 adet dizi var ve her birisinde sayılar tutuluyor. Bir tane toplam değeri giriliyor. Her diziden bir eleman almak suretiyle, girilen toplam değeri elde edilmeye çalışılıyor. En az bir tane toplam değerine erişilmesi yeterlidir. Eğer hiç bir şekilde erişilemiyorsa, çıktı olarak da bildirilmesi gerekmektedir */ * Çözüm 1, "O(n^3)" karmaşıklığında: #include #include #include #include "MyUtility.h" using namespace MyUtility; using ivec = std::vector; auto get_vector(std::size_t size) { ivec vec(size); std::generate(vec.begin(), vec.end(), Random::Irand{-10'000, 10'000}); // Way - I // std::generate_n(vec.begin(), size, Random::Irand{-10'000, 10'000}); // Way - II // std::ranges::generate(vec, Random::Irand{-10'000, 10'000}); // Way - III return vec; } int main() { auto vec1 = get_vector(10'000u); auto vec2 = get_vector(10'000u); auto vec3 = get_vector(10'000u); std::cout << "Total Value: "; int sum{}; std::cin >> sum; O(n^3) for (auto i : vec1) for (auto j : vec2) for (auto k : vec3) if (i + j + k == sum) std::cout << std::format("{} + {} + {} = {}\n", i, j, k, sum); } * Çözüm 2, "o(n^2logn)" karmaşıklığında: #include #include #include #include "MyUtility.h" using namespace MyUtility; using ivec = std::vector; auto get_vector(std::size_t size) { ivec vec(size); std::generate(vec.begin(), vec.end(), Random::Irand{-10'000, 10'000}); // Way - I // std::generate_n(vec.begin(), size, Random::Irand{-10'000, 10'000}); // Way - II // std::ranges::generate(vec, Random::Irand{-10'000, 10'000}); // Way - III return vec; } int main() { auto vec1 = get_vector(10'000u); auto vec2 = get_vector(10'000u); auto vec3 = get_vector(10'000u); std::ranges::sort(vec3); // O(nlogn) std::cout << "Total Value: "; int sum{}; std::cin >> sum; // O(n^2) for (auto i : vec1) for (auto j : vec2) if (auto iter = std::ranges::lower_bound(vec3, sum - (i + j)); iter != vec3.end()) std::cout << std::format("{} + {} + {} = {}\n", i, j, *iter, sum); }