2 / 2 / 2
Регистрация: 11.05.2011
Сообщений: 65
|
|
1 | |
Из последовательности выбрать четыре цифры образующие самое маленькое число04.10.2015, 12:01. Показов 1176. Ответов 5
Метки нет (Все метки)
Дана последовательность из восьми цифр, каждая из которых равна 1, 2
или 3. Требуется выбрать из них четыре цифры так, чтобы число, полученное при выписывании этих цифр в том же порядке, в каком они были в последовательности, оказалось как можно меньше. Примеры in out 12333333 1233 32111111 1111 12131211 1111 33333323 3323 32333313 2313 Кто решал такую задачку, поделитесь пожалуйста алгоритмом решения. Есть некоторые мысли по алгоритму: 1. Можно все возможные варианты вывести в массив и выбрать вариант с минимальным значением. 2. Можно изначально искать минимальное число во входной последовательности цифр, у которого порядковый номер меньше 5. Потом с данного числа(чисел) искать минимальное значение последовательности из 4х цифр. У меня не получается это все в логику воплотить.
0
|
04.10.2015, 12:01 | |
Ответы с готовыми решениями:
5
Найти самое большое и самое маленькое число в матрице Поменять самое большое и самое маленькое число местами В какой из двух последовательностей встречается самое большое, а в какой - самое маленькое число? Вывести из файла самое маленькое простое число |
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
|
|
04.10.2015, 12:22 | 2 |
представь что у тебя есть рамка из 4 элементов и ты ее двигаешь в право на один элемент.
Теперь ты конвертируешь 4 цифры в рамке в число. Сравниваешь его стем что у тебя уже есть, если меньше, то меняешь указатель на первую цифру в рамке, и записываешь это число как минимальное, двигаешь рамку дальше.... Добавлено через 9 минут .......................... Или, можно не конвертировать в число. У нас есть указатель на наименьшую последовательность. Мы двигаем рамку, и сравниваем последовательности так: первый элемент с первым (и тд..)- очевидно, что если число в рамке меньше сравниваемого элемента(того на который у нас указатель как наименьшее число) то сдвигаем указатель.... пример. int *m = seq[0];//12333333 12333333 //рамка сравниваем: 1233 2333 1<2 - минимальное число осталось, двигаем рамку....ну в этом примере так и останется
0
|
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
|
|
04.10.2015, 12:29 | 4 |
0
|
2 / 2 / 2
Регистрация: 11.05.2011
Сообщений: 65
|
|||||||||||
04.10.2015, 13:06 [ТС] | 5 | ||||||||||
Я нашел решение, реализовал его в коде. На примерах выдает правильный результат. Код накидал что бы не забыть. Сейчас думаю как его оптимизировать.
Добавлено через 17 минут Не могу найти как свое сообщение отредактировать. Рекурсию в пень, погорячился. Через цикл.
1. Для первой цифры Находим во входной последовательности минимальное число с порядковым номером меньше необходимого количества цифр которые необходимо найти. 2. Для следующих цифр поиск начинаем с порядкового номера на единицу больше предыдущей найденной цифры и увеличиваем границу поиска на единицу.
0
|
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
|
||||||
04.10.2015, 13:07 | 6 | |||||
0
|
04.10.2015, 13:07 | |
Помогаю со студенческими работами здесь
6
Найти самое маленькое положительное число массива Поменять все негативные числа на самое маленькое положительное число Рассматривая слова как числа, определить самое маленькое число Найти самое маленькое число, которое делится нацело на все числа от 1 до 20 Найти в массиве самое маленькое нечетное число и вывести его на экран Найти и вывести самое маленькое число Фибоначчи, которого нет в этом файле Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |