Create Vec<u32>#38
Open
Tim-tech-gif wants to merge 1 commit into
Open
Conversation
Щоб реалізувати ці дві функції, спершу розглянемо алгоритм: Функція count_permutation(shipments: &Vec<u32>) -> usize: Необхідно підрахувати, скільки вантажу потрібно перемістити між кораблями, щоб на кожному було однаково. Для цього спочатку перевіряємо, чи можна взагалі зробити рівний розподіл. Якщо загальна кількість вантажу ділиться на кількість кораблів без залишку, можемо продовжити. Далі для кожного корабля, де вантажу більше за середній, обчислюємо, скільки потрібно перенести до кораблів з меншим вантажем. Функція gen_shipments(n: usize) -> Vec<u32>: Створюємо випадковий вектор розміру n, який можна розподілити рівномірно. Для цього задаємо випадкові значення вантажів, а потім обчислюємо, скільки вантажу потрібно додати або відняти, щоб сума була кратною кількості кораблів. Функція count_permutation: Спочатку обчислює загальну кількість вантажу на всіх кораблях. Перевіряє, чи можна рівномірно розподілити вантаж (чи сума ділиться на кількість кораблів без залишку). Підраховує загальну кількість перенесень, необхідних для вирівнювання вантажу. Функція gen_shipments: Генерує випадковий вектор вантажів для кораблів. Переконується, що сума вантажів кратна кількості кораблів шляхом коригування першого елемента.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Щоб реалізувати ці дві функції, спершу розглянемо алгоритм:
Функція count_permutation(shipments: &Vec) -> usize:
Необхідно підрахувати, скільки вантажу потрібно перемістити між кораблями, щоб на кожному було однаково. Для цього спочатку перевіряємо, чи можна взагалі зробити рівний розподіл. Якщо загальна кількість вантажу ділиться на кількість кораблів без залишку, можемо продовжити. Далі для кожного корабля, де вантажу більше за середній, обчислюємо, скільки потрібно перенести до кораблів з меншим вантажем. Функція gen_shipments(n: usize) -> Vec:
Створюємо випадковий вектор розміру n, який можна розподілити рівномірно. Для цього задаємо випадкові значення вантажів, а потім обчислюємо, скільки вантажу потрібно додати або відняти, щоб сума була кратною кількості кораблів.
Функція count_permutation:
Спочатку обчислює загальну кількість вантажу на всіх кораблях. Перевіряє, чи можна рівномірно розподілити вантаж (чи сума ділиться на кількість кораблів без залишку). Підраховує загальну кількість перенесень, необхідних для вирівнювання вантажу. Функція gen_shipments:
Генерує випадковий вектор вантажів для кораблів.
Переконується, що сума вантажів кратна кількості кораблів шляхом коригування першого елемента.