Перебор со "сдвигом"...?
Преветствую всех посетивших темку!
Есть задачка: реализовать алгоритм на беисике. Задача заключается в следующем.
Имеется группа чисел, состоящих из 5-ок и 4-ок. Известно общее количество чисел
в группе. Известно также, что 5-ки находятся справа, а четверки слева, например:
Группа состоит из 5 чисел, в которой две 5-ки слева, три 4-ки справа: 55444
Необходимо переместить 5-ки вправо, 4-ки влево согласно алгоритму:
Шаг Действие
0 55444 - имеем
1 54544
2 45544
3 54454
4 45454
5 44554
6 54445
7 45445
8 44545
9 44455 - надо получить
Получается перебор вариантов со сдвигом 5-ок вправо, а 4-ок влево.
Помогите чем сможите, может ссылочку подкините. Сам пробовал искать ничего
похожего пока не нашёл.
Есть задачка: реализовать алгоритм на беисике. Задача заключается в следующем.
Имеется группа чисел, состоящих из 5-ок и 4-ок. Известно общее количество чисел
в группе. Известно также, что 5-ки находятся справа, а четверки слева, например:
Группа состоит из 5 чисел, в которой две 5-ки слева, три 4-ки справа: 55444
Необходимо переместить 5-ки вправо, 4-ки влево согласно алгоритму:
Шаг Действие
0 55444 - имеем
1 54544
2 45544
3 54454
4 45454
5 44554
6 54445
7 45445
8 44545
9 44455 - надо получить
Получается перебор вариантов со сдвигом 5-ок вправо, а 4-ок влево.
Помогите чем сможите, может ссылочку подкините. Сам пробовал искать ничего
похожего пока не нашёл.
Нет ни у кого мыслишек по этому поводу? Я третий день пытаюсь, пока не нашёл
ничего разумного
ничего разумного
Просто правило вашего сдвига какое-то нелогичное и хитрое
Я бы еще понял если бы, например
55444
54544
45544
45454
44554
44545
44455 - тогда понятно, ну или
55444
45544
44554
44455 - это совсем просто, а у вас пятерки как-то скачут отбалды
Я бы еще понял если бы, например
55444
54544
45544
45454
44554
44545
44455 - тогда понятно, ну или
55444
45544
44554
44455 - это совсем просто, а у вас пятерки как-то скачут отбалды
It's a long way to the top if you wanna rock'n'roll
Задача заключается в том, что не обходимо перебрать все возможные комбинации,
не нарушая количества пятёрок и четвёрок.
Ваш алгоритм не предусматривает всех комбинаций.
Смотрите, в моих последовательностях есть такие комбинации: 54445, 54454
В ваших их нет. А все комбинации, что написали вы, в моих комбинациях есть.
Плюс порядок, его необходимо соблюсти как в моем алгоритме.
Улавливаете мысль. Было бы всё так просто, то я бы и не обратился к форумчанам.
Есть ещё мысли?
не нарушая количества пятёрок и четвёрок.
Ваш алгоритм не предусматривает всех комбинаций.
Смотрите, в моих последовательностях есть такие комбинации: 54445, 54454
В ваших их нет. А все комбинации, что написали вы, в моих комбинациях есть.
Плюс порядок, его необходимо соблюсти как в моем алгоритме.
Улавливаете мысль. Было бы всё так просто, то я бы и не обратился к форумчанам.
Есть ещё мысли?
Блин - если вам понятен порядок, то почему бы его здесь не объяснить? Я могу сказать как получить все возможные варианты, но я не пойму в какой последовательности они должны идти.
It's a long way to the top if you wanna rock'n'roll
Возражение принимаю. Объясняю.
Имеем 55444. Пятёрка в первом разряде слева неможет переместится на второй разряд слева, поскольку там пятёрка. Она сдвигает пятёрку второго разряда слева на третий разряд получаем: 54544. Далее путь свободен, во втором разряде
четвёрка, и пятёрка с первого разряда перемещается на второй: 45544. Далее
пятёрка во втором разряде не может переместиться на третий разряд из-за
пятёрки в третем разряде. Пятёрка второго разряда сдвигает пятёрку третего разряда на четвёртый разряд, а сама возвращается на первый слева разряд: 54454.
Далее путь первой слева пятёрки свободен до третьего разряда: 45454, 44554.
И так далее. Получается некий сдвиг, при этом не нарушается условие задачи
и комбинации не повторяются.
Имеем 55444. Пятёрка в первом разряде слева неможет переместится на второй разряд слева, поскольку там пятёрка. Она сдвигает пятёрку второго разряда слева на третий разряд получаем: 54544. Далее путь свободен, во втором разряде
четвёрка, и пятёрка с первого разряда перемещается на второй: 45544. Далее
пятёрка во втором разряде не может переместиться на третий разряд из-за
пятёрки в третем разряде. Пятёрка второго разряда сдвигает пятёрку третего разряда на четвёртый разряд, а сама возвращается на первый слева разряд: 54454.
Далее путь первой слева пятёрки свободен до третьего разряда: 45454, 44554.
И так далее. Получается некий сдвиг, при этом не нарушается условие задачи
и комбинации не повторяются.
Всё, нашел способ реализации. Расписывать не буду, времени мало.
Всем спасибо за внимание.
Всем спасибо за внимание.
Это что то из разряда пузырьковой сортировки получается. Только еще поставить условие можно
[syntax='Delphi']
if a = a[i+1] then a := a[0];
[/syntax]
[syntax='Delphi']
if a = a[i+1] then a := a[0];
[/syntax]
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)