|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Dmitriy Gerasimenko 2:5020/400 23 Jul 2002 14:51:09 To : Andrew Ezhguroff Subject : Re: Перебор чисел -------------------------------------------------------------------------------- AE> А какое отношение это имеет к исходной задаче? Требуется найти все строки AE> длинной N, содержащие (в любом кол-ве) символы заданного алфавита. Где здесь AE> перестановка и N! ? AE> Требуемые M^N строк генерирует, например, такой код: > AE> #include <stdio.h> AE> #include <stdlib.h> AE> #include <string.h> > AE> int Tab_Out[256]; > AE> int main(int argc, char **argv){ AE> if(argc<3)return 2; AE> int Len_Out = atoi(argv[1]); AE> int Cnt_Chr = strlen(argv[2]); AE> while(1){ AE> for(int i=0; i<Len_Out; putchar(argv[2][Tab_Out[i++]])); AE> putchar('\n'); AE> for(int i=0; (Tab_Out[i]=(Tab_Out[i]+1)%Cnt_Chr)==0;) AE> if(++i>=Len_Out)return 0; AE> } AE> } AE> С уважением, Андрей. Этот код я скомпилировал в Borland for DOS и вот что он выдаёт: //-------------------------------------------------------------------------- -- [perebor.exe 4 1234] Число - 1234 Позиций - 4 Перестановки: 1111 2111 3111 4111 //-------------------------------------------------------------------------- -- [perebor.exe 3 1234] Число - 1234 Позиций - 3 Перестановки: 111 211 311 411 //-------------------------------------------------------------------------- -- Количество перестановок мало! Т.е. алгоритму выдаёт неверный результат! С уважением! Dmitriy AKA AC//DC //-------------------------------------------------------------------------- -- --- ifmail v.2.15dev5 * Origin: UNKNOWN (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/8968932343ff.html, оценка из 5, голосов 10
|