diff --git a/Ignatenok Easy.cpp b/Ignatenok Easy.cpp deleted file mode 100644 index 0927d92c..00000000 --- a/Ignatenok Easy.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include -#include - -using namespace std; -int main() -{ - int n; //кол-во элементов списка - cin >> n; - int m[n]; //списков из n-элементов - int s = 0; //сумма элементов списка - int c = 0; - //счетчик чисел больших среднего - - for(int i = 0; i < n; i++) - { - cin >> m[i]; - s += m[i]; - } - for(int i = 0; i < n; i++) - { - if (m[i] > (s/n)) - { - c += 1; - } - } - cout << "Кол-во эл. больших среднего арифметического:" << c; - return 0; -} diff --git a/Lab6.cpp b/Lab6.cpp new file mode 100644 index 00000000..b38a6308 --- /dev/null +++ b/Lab6.cpp @@ -0,0 +1,35 @@ +class Solution { +private: + static constexpr int MAX_DIGITS = 11; + static constexpr int MASK_SIZE = 1 << 10; + int dp[MAX_DIGITS][2][MASK_SIZE]; + int dfs(int index, int usedMask, bool isTight, const string &digits) { + if (index == static_cast(digits.size())) { + return usedMask == 0 ? 0 : 1; + } + if (dp[index][isTight][usedMask] != -1) { + return dp[index][isTight][usedMask]; + } + int limit = isTight ? (digits[index] - '0') : 9; + int result = 0; + + for (int digit = 0; digit <= limit; ++digit) { + if (usedMask == 0 && digit == 0) { + result += dfs(index + 1, usedMask, isTight && (digit == limit), digits); + } else { + if ((usedMask & (1 << digit)) == 0) { + result += dfs(index + 1, usedMask | (1 << digit), isTight && (digit == limit), digits); + } + } + } + + dp[index][isTight][usedMask] = result; + return result; + } + +public: + int numDupDigitsAtMostN(int n) { + memset(dp, -1, sizeof(dp)); + string digits = to_string(n); + return n - dfs(0, 0, true, digits); + } \ No newline at end of file diff --git a/lab-3.cpp b/lab-3.cpp deleted file mode 100644 index 12ce656f..00000000 --- a/lab-3.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include -#include -using namespace std; - -// Функция для поиска всех подмассивов размера K с суммой элементов равной 0 -vector> findZeroSumSubarrays(const vector& arr, int K) { // O(N^K) временная сложность - int N = arr.size(); - vector> result; // Хранение найденных комбинаций индексов - - // Рекурсивная функция для генерации комбинаций - function, int)> backtrack = [&](int start, int depth, vector current, int currentSum) { - if (depth == K) { // Базовый случай: комбинация размера K - if (currentSum == 0) { // Проверка, равна ли сумма нулю - result.push_back(current); // Добавление комбинации в результат, если сумма равна нулю - } - return; - } - for (int i = start; i < N; ++i) { // Итерация по элементам массива - current.push_back(i); // Выбор текущего индекса - backtrack(i + 1, depth + 1, current, currentSum + arr[i]); // Рекурсия с следующим индексом - current.pop_back(); // Откат (backtrack) - } - }; - - backtrack(0, 0, {}, 0); // Инициализация рекурсии - return result; -} - -int main() { // Главная функция - // Тест 1: Маленький массив - vector arr1 = {1, -1, 2, -2, 3}; - int K1 = 2; - vector> result1 = findZeroSumSubarrays(arr1, K1); - assert(result1.size() == 2); // Существует два подмассива размера 2 с суммой 0: {0, 1}, {2, 3} - - // Проверка - vector> expected1 = {{0, 1}, {2, 3}}; - assert(result1 == expected1); - - // Тест 2: Большой K, чтобы увидеть разницу во времени работы - vector arr2 = {1, -1, 2, -2, 3, -3}; - int K2 = 4; - vector> result2 = findZeroSumSubarrays(arr2, K2); - assert(result2.size() == 3); // Существует три подмассива размера 4 с суммой 0 - - // Проверка - vector> expected2 = {{0, 1, 2, 3}, {0, 1, 4, 5}, {2, 3, 4, 5}}; - assert(result2 == expected2); - - cout << "Все тесты пройдены успешно!" << endl; - - return 0; -} \ No newline at end of file diff --git "a/\320\230\320\263\320\275\320\260\321\202\320\265\320\275\320\276\320\272_\320\244\320\270\320\273\320\270\320\277\320\277_\320\236\321\202\321\207\320\265\321\202_\320\233\320\260\320\261\320\260_6_J3111 .docx" "b/\320\230\320\263\320\275\320\260\321\202\320\265\320\275\320\276\320\272_\320\244\320\270\320\273\320\270\320\277\320\277_\320\236\321\202\321\207\320\265\321\202_\320\233\320\260\320\261\320\260_6_J3111 .docx" new file mode 100644 index 00000000..a040ef79 Binary files /dev/null and "b/\320\230\320\263\320\275\320\260\321\202\320\265\320\275\320\276\320\272_\320\244\320\270\320\273\320\270\320\277\320\277_\320\236\321\202\321\207\320\265\321\202_\320\233\320\260\320\261\320\260_6_J3111 .docx" differ