Тема: Завдання з масивами,мова С
Допоможіть знайти максимальне значення серед чисел масиву,які не повторюються.
Як відокремити числа,що не повторюються?Якщо перебирати цикл в циклі,то як це зробити?
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Завдання з масивами,мова С
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Допоможіть знайти максимальне значення серед чисел масиву,які не повторюються.
Як відокремити числа,що не повторюються?Якщо перебирати цикл в циклі,то як це зробити?
Допоможіть знайти максимальне значення серед чисел масиву,які не повторюються.
Як відокремити числа,що не повторюються?Якщо перебирати цикл в циклі,то як це зробити?
Як відокремити числа,що не повторюються?
найперше, що приходе в голову, це зробити масив структур, кожна структура мала б 2 змінні:
перша змінна - це значення числа
друга змінна - кількість, котра показує, скільки разів ви знайшли це число в масиві
Потім просто перебираєте той масив, і коли знаходите якесь число, то:
якщо дане число вже є в масиві (тобто ви вже маєте структуру, перша змінна котрої дорівнює цьому числу), тоді просто збільшуєте другу змінні відповідної структури на одиничку
якщо дане число не представлене в масиві структур, то створюєте структуру і додаєте до масиву.
Після проходу по масиву з числами у вас буде інший масив, котрий буде містити структури, цих структур буде рівно стільки, скільки у вас є унікальних чисел в першому масиві, і лише ті структури, друга змінна котрих дорівнюватиме одиничці, будуть мати унікальне число з першого масиву в якості першої змінної.
Якщо перебирати цикл в циклі,то як це зробити?
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
}
}
Як відокремити числа,що не повторюються?
Рішення в лоба, брутфорсом:
Створюємо та заповнюємо масив.
Перебираємо елементи масиву, використовуючи два цикли.
Зовнішній цикл буде проходити по елементах масиву, а внутрішній — шукати дублікат у решті масиву.
Якщо дублікат знайдений, тоді продовжуйте інакше це окремий елемент.
Складність погана O(n^2).
Покращити алгоритм можна попередньо його сортуючи. Основна ідея цього алгоритму полягає в тому, що у відсортованому масиві всі повторювані елементи групуються в сусідні позиції.
Складність вже краща O(n log n).
За O(n) можна реалізувати цей алгоритм використовуючи хеш-таблиці, хоча передбачаю, щоб вам це не підійде.
Якщо перебирати цикл в циклі,то як це зробити?
Перебирати цикл в циклі, ем, що?
Переходьте на темний бікPython, у нас є печенькиcollections.Counter:
from collections import Counter
def max_of_unique(l):
return max(n for n,c in Counter(l) if c==1)
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися