[LJ2ME]

Feb 07, 2009 03:16

Умничка и мой гуру void_sp предложил очень клевый вариант решения. Возможно его до этого предлагали Костя и Нюкем, в таком случае им не удалось его мне грамотно обьяснить. Толчком к выводу алгоритма послужило известное количество итоговых чисел-511. 2 в 9й минус число ноль. Если б мы лучше изучали комбинаторику, мы бы его сразу вывели, а не воспользовались аутпутом дописаной проги. Суть алгоритма воида:крутим цикл от 1 до 511. Каждое число в двоичной форме будет представлять собой индикатор-уникальную комбинацию нулей и единиц в 9 разрядах. Соответственно, на каждом шаге цикла имеем уникальную комбинацию номеров разрядов, в которых, скажем, единицы. Остается закрутить второй цикл 1..9 в котором парсить последний разряд, в случае единицы писать в сумму значение счетчика, и затем делать сдвиг вправо. В результате имеем очень простой алгоритм по отношению к первоначальному, однако, за счет парсинга получается 4599 всего итераций, против 511 вначале. Ну да фигня, зато там рекурсия и тупняк

Интересно, Кодинг

Previous post Next post
Up