1

Тема: Завдання з масивами,мова С

Допоможіть знайти максимальне значення серед чисел масиву,які не повторюються.
Як відокремити числа,що не повторюються?Якщо перебирати цикл в циклі,то як це зробити?

2

Re: Завдання з масивами,мова С

dimakrupko00 написав:

Допоможіть знайти максимальне значення серед чисел масиву,які не повторюються.
Як відокремити числа,що не повторюються?Якщо перебирати цикл в циклі,то як це зробити?

Як відокремити числа,що не повторюються?

найперше, що приходе в голову, це зробити масив структур, кожна структура мала б 2 змінні:
перша змінна - це значення числа
друга змінна - кількість, котра показує, скільки разів ви знайшли це число в масиві

Потім просто перебираєте той масив, і коли знаходите якесь число, то:
якщо дане число вже  є в масиві (тобто ви вже маєте структуру, перша змінна котрої дорівнює цьому числу), тоді просто збільшуєте другу змінні відповідної структури на одиничку
якщо дане число не представлене в масиві структур, то створюєте структуру і додаєте до масиву.

Після проходу по масиву з числами у вас буде інший масив, котрий буде містити структури, цих структур буде рівно стільки, скільки у вас є унікальних чисел в першому масиві, і лише ті структури, друга змінна котрих дорівнюватиме одиничці, будуть мати унікальне число з першого масиву в якості першої змінної.


Якщо перебирати цикл в циклі,то як це зробити?

for (int i = 0; i < 10; i++) {
 for (int j = 0; j < 10; j++) {
 }
}
Подякували: dimakrupko001

3 Востаннє редагувалося wander (13.11.2019 21:45:16)

Re: Завдання з масивами,мова С

dimakrupko00 написав:

Як відокремити числа,що не повторюються?

Рішення в лоба, брутфорсом:

  • Створюємо та заповнюємо масив.

  • Перебираємо елементи масиву, використовуючи два цикли.

  • Зовнішній цикл буде проходити по елементах масиву, а внутрішній — шукати дублікат у решті масиву.

  • Якщо дублікат знайдений, тоді продовжуйте інакше це окремий елемент.

Складність погана O(n^2).

Покращити алгоритм можна попередньо його сортуючи. Основна ідея цього алгоритму полягає в тому, що у відсортованому масиві всі повторювані елементи групуються в сусідні позиції.
Складність вже краща O(n log n).

За O(n) можна реалізувати цей алгоритм використовуючи хеш-таблиці, хоча передбачаю, щоб вам це не підійде.

dimakrupko00 написав:

Якщо перебирати цикл в циклі,то як це зробити?

Перебирати цикл в циклі, ем, що?

Подякували: FakiNyan1

4

Re: Завдання з масивами,мова С

Переходьте на темний бікPython, у нас є печенькиcollections.Counter:

from collections import Counter
def max_of_unique(l):
    return max(n for n,c in Counter(l) if c==1)
Подякували: vаrіg2kо1