0 / 0 / 1
Регистрация: 24.11.2016
Сообщений: 14
|
|
1 | |
Вычислить количество IP адресов, которые можно составить из данного числа15.12.2017, 12:26. Показов 1315. Ответов 10
Метки нет Все метки)
(
Помогите решить следующую задачу. (нужна идея). Имеется целое число от 4 до 14 разрядов. Нужно вычислить количество IP адресов которые можно составить из данного числа.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
15.12.2017, 12:26 | |
Ответы с готовыми решениями:
10
Определить количество различных чисел, которое можно составить из цифр данного числа Требуется найти слова, которые можно составить из данного Вывести на экран все трехзначные числа, которые можно получить из цифр данного числа |
Модератор
9474 / 4799 / 3209
Регистрация: 17.08.2012
Сообщений: 15,035
|
|
15.12.2017, 23:26 | 2 |
Garry66, условие некорректное. Может быть, так:
"Имеется целое положительное десятичное число длиной от 4 до 14 разрядов. Нужно вычислить количество IP-адресов которые можно составить из разрядов данного числа. Любой разряд числа при составлении IP-адреса повторно использовать нельзя." ?
0
|
0 / 0 / 1
Регистрация: 24.11.2016
Сообщений: 14
|
|
16.12.2017, 21:04 [ТС] | 3 |
Все так, но идея решения есть?
0
|
Модератор
9474 / 4799 / 3209
Регистрация: 17.08.2012
Сообщений: 15,035
|
|
16.12.2017, 21:53 | 4 |
Кроме полного перебора, никаких идей. Генерировать перестановки например, с помощью алгоритма Нарайаны, и из каждой перестановки составлять всевозможные адреса и проверять их на допустимость. Тоже целая эпопея, сгенерировать из текущей перестановки всевозможные одно- двух- и трёхзначные числа, пускай и подряд идущие. То есть, максимальное количество проверок будет не 14!, а несколько побольше.
0
|
0 / 0 / 1
Регистрация: 24.11.2016
Сообщений: 14
|
|
17.12.2017, 12:04 [ТС] | 5 |
Пусть перебор. Но как? Переводил все в текстовый формат, и проверял вхождение адреса (сформированного вложенными циклами) функцией POS. Но программа долго работает (зависает). Эта задача районного уровня школьной олимпиады по информатике, поэтому, я думаю, что решение должно быть проще.
0
|
Модератор
9474 / 4799 / 3209
Регистрация: 17.08.2012
Сообщений: 15,035
|
|
17.12.2017, 12:51 | 6 |
А чего ж полному перебору не зависать? 14! = 87178291200 только перестановок исходных цифр, а ещё нужно и адрес формировать... А тут ещё и тормозное pos (эта комманда - по любому цикл, пусть даже и с использованием шустрой ассемблерной инструкции scas). Проще вряд ли получится, потому что каждое поле IP-адреса может содержать от 1 до 3 цифр, да ещё и чтобы полученное значение поля было в диапазоне 0..255. Не знаю. Думал ещё насчёт массива количеств цифр (типа d[0..10] of byte, например), но - всё равно выползает на свет Божий алгоритм Нарайаны, только в усложнённом виде.
Добавлено через 4 минуты Да, и, если количество адресов сравнимо с 14!, то оно в longint не влезет. Какой диалект паскаля используете? В нём есть тип int64, например? Школьная олимпиада, говорите? Странно. Хотя... Возможно, составитель задачи наивно считает, что диапазон поля IP-адреса 0..999, тогда проще получается, но не на много.
0
|
0 / 0 / 1
Регистрация: 24.11.2016
Сообщений: 14
|
|
18.12.2017, 10:34 [ТС] | 7 |
Диапазон поля, по условию, 0...255.
0
|
Модератор
9474 / 4799 / 3209
Регистрация: 17.08.2012
Сообщений: 15,035
|
||||||
18.12.2017, 14:46 | 8 | |||||
Мой вариант, с перебором по IP:
0
|
0 / 0 / 1
Регистрация: 24.11.2016
Сообщений: 14
|
||||||
19.12.2017, 10:33 [ТС] | 9 | |||||
![]() Решение
Как то очень сложно для школы.
Теперь мой вариант. Тоже перебор, но через строки. Сбило с толку, что в условии не сказано, что все цифры должны быть использованы.
0
|
Модератор
9474 / 4799 / 3209
Регистрация: 17.08.2012
Сообщений: 15,035
|
|
19.12.2017, 12:26 | 10 |
Ваша программа не учитывает, что цифры исходного числа могут использоваться в IP-адресе в любом порядке. В условии нигде не указано, что цифры в IP-адресе должны идти в том же порядке, что и в исходном числе. Следовательно, Ваша программа не верна.
0
|
0 / 0 / 1
Регистрация: 24.11.2016
Сообщений: 14
|
|
19.12.2017, 19:35 [ТС] | 11 |
Согласен. Условие задачи допускает вольности. Меня тоже сбило с толку то, что все цифры должны быть использованы.Но тем не менее все тесты, выданные для проверки, прошли. Следовательно, за данное решение получаем максимальное количество баллов. Тему можно закрывать. Всем спасибо!
0
|
19.12.2017, 19:35 | |
Помогаю со студенческими работами здесь
11
Количество прямоугольников, которые можно вырезать из данного листа бумаги
Найти количество слов, которые можно получить перестановкой букв данного слова Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |