JavaRush /Java блог /Архив info.javarush /подскажите алгоритм разбиения числа на цифры различными с...
Goodwin
18 уровень
Obolon

подскажите алгоритм разбиения числа на цифры различными способами не переставляя.

Статья из группы Архив info.javarush
Знаю, что в зависимости от длины числа получается 2^(N-1) вариантов, где N - длина числа. Например число 1234: (тогда 2^(4)=8)
  1. [1234]
  2. [1] [2] [3] [4]
  3. [1] [2] [34]
  4. [1] [23] [4]
  5. [1] [234]
  6. [12] [3] [4]
  7. [12] [34]
  8. [123] [4]
Рекурсия не подойдет, наверное, потому что мне нужно сохранять эти варианты.
Комментарии (20)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Goodwin Уровень 18
27 июля 2015
Спасибо Вам. Исправил условие, а то вы его не так поняли.
PolyMorph Уровень 36
27 июля 2015
int n = 123;
String s = "" + n;
char[] ch = s.toCharArray(); 
EvIv Уровень 30
27 июля 2015
псевдокод:

младшаяЦифра = число % 10;
число = число / 10;

повторять, пока число не станет 0.
— то есть находим остаток от деления числа на 10. Например, число 365: после первой операции имеем младшаяЦифра = 365%10 = 5;
второй строчкой «укорачиваем» наше число, чтобы дальше получить следующую с конца цифру (деление целочисленное):
число = 365/10 = 36.

Повторив шаги, получим по порядку далее цифру 6 и цифру 3. после последнего деления 3/10 = 0, выходим из цикла.

Как оформить это в код, сохраняя цифры и как исправить их порядок для ответа, оставляю как упражнение для автора =)