Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
3 / 3 / 1
Регистрация: 12.09.2015
Сообщений: 33

Алгоритм для задачи

19.01.2017, 11:58. Показов 1703. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача следующая:
Кликните здесь для просмотра всего текста

Выравнивание команд

Для проведения различных игр и конкурсов на военно-патриотическом слете среди лучших школьников организуются команды с равным количеством участников. После отъезда части школьников количество участников в командах стало различным. После очередного заезда школьников было решено выровнять количество участников в командах. Определите, возможно ли распределить вновь приехавших ребят среди имеющихся команд так, чтобы количество участников в командах было равным. Причем каждую команду должен пополнить хотя бы один из вновь из прибывших школьников.
Если можно создать команды с равным количеством участников, то необходимо вывести количество участников в одной команде. Если такое распределение не возможно, то вывести «NO».
Формат ввода

Входной файл "input.txt".
В первой строке файла задается число N (2<N<100) – количество команд.
В следующей строке через пробел задаются количества человек в каждой команде (не более 300).
В последней строке задается количество вновь прибывших школьников (не более 10000).
Пример входного файла:
5
11 12 13 14 15
20
Формат вывода

Выходной файл "output.txt" содержит одну строку
Пример выходного файла:
17


Собственно, как сие вообще реализовать? Есть идея с тем, что добавлять к каждому элементу массива по единице из числа тех, кто прибыл. Когда число это будет равно нулю, то проверить, равны ли значения. Если возникнет исключение, вывести "NO".

Все побочные действия я сделал, помогите только додумать алгоритм
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.io.*;
 
public class Solution
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader input = new BufferedReader(new FileReader("input.txt"));
        FileWriter output = new FileWriter("output.txt");
 
        int N = Integer.parseInt(input.readLine()); 
        String[] str2 = input.readLine().split(" ");
        int New = Integer.parseInt(input.readLine());
        int[] commands = new int[N];
        for(int i = 0; i < N; i++)
            commands[i] = Integer.parseInt(str2[i]);
 
        
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.01.2017, 11:58
Ответы с готовыми решениями:

Эффективный алгоритм для задачи
Условия следующие: Даны n различных натуральных чисел и число m. Нужно выяснить, можно ли представить число m в виде произведения...

Алгоритм задачи
Простите за тупость, но пишу курсач по дискретной математике. Тема: Перебор размещений с повторениями и без повторений. Все уже давно...

Подскажите алгоритм задачи !
https://server.179.ru/tasks/olymp/005.html#g_t005 Какой алгоритм сортировки использовать?

3
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
19.01.2017, 12:17
По моему все сводится к решению простого уравнения. Напиши на бумажке всю фигню, понятно станет. Т.е. для двух ищешь разность между командами, вычитаещь ее из новоприбывших. То, что осталось, должно делиться на 2.
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
19.01.2017, 12:18
Лучший ответ Сообщение было отмечено 32xlevel как решение

Решение

Цитата Сообщение от 32xlevel Посмотреть сообщение
Пример входного файла:
5
11 12 13 14 15
20
Формат вывода
1) Находишь сколько максимум человек в команде. => max = 15
2) Делаешь инкремент максимума => max = max + 1 = 16
2) Проходишь по всем командам, суммируешь разницу между максимумом и кол-вом участников в каждой команде
=> sum = (16 - 11) + (16 - 12) + (16 - 13) + (16 - 14) + (16 - 15) = 15
3) Проверяешь, делится ли (New - sum) на кол-во команд => res = (New - sum) / N = 5 / 5 = 1.
Если делится, ответ max + res = 16 + 1

алгоритм понятен?
1
149 / 162 / 48
Регистрация: 19.10.2012
Сообщений: 530
19.01.2017, 12:28
— Поиск команды с наибольшим к-вом участников(int currentTeamMembersMax).
— Суммирование текущее к-во участников в каждой команде и к-во новоприбывших(int totalSum)
— Проверка делится ли к-во участников на к-во команд без остатка(иначе прерываем и результат NO), сохраняем результат деления(int newTeamMembersMax)
— Проверка является ли currentTeamMembersMax< newTeamMembersMax(иначе не во все команды попали новые участники, прерываем и возвращаем NO)
— Возвращаем newTeamMembersMax
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.01.2017, 12:28
Помогаю со студенческими работами здесь

генетический алгоритм для NP задачи
Всем привет! Пытаюсь использовать генетический алгоритм для задачи на граф, где граф нужно вложить в книгу таким образом, чтобы...

алгоритм для решения задачи с рукопожатиями
Здравствуйте! Столкнулся с задачей где нужно вычислить число уникальных рукопожатий при заданном N (человек). Я не очень опытен в...

Генетический алгоритм для задачи Коммивояжера
Здравствуйте!Мне очень нужна помощь.Необходимо решить задачу Коммивояжера с помощью генетического алгоритма и решение представить на...

Алгоритм для решения задачи по программированию
Доброго времени суток всем. Прошу помощи в составлении алгоритма решении задачи: На ежедневную прогулку выходят 15 детей. Их строят в...

Составить алгоритм для решения задачи
Составить алгоритм для решения задачи: подсчитать значение выражения Y=78-24C на промежутке от 10 до 20


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru