Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Vladimir Vassilevsky                 2:5020/175.2   06 Jul 2003  17:57:34
 To : slavik levchenko
 Subject : перебор комбинаций
 -------------------------------------------------------------------------------- 
 
 Sun Jul 06 2003 10:54, slavik levchenko wrote to all:
 
  sl> /re, all.
 
  sl>     срочно нужна программа/функция/алгоритм, которая получает на входе
  sl> набор символов (массив) и выводит всевозможные комбинации перестановок
  sl> данных символов. желательно на С.
 
  sl> заранее благодарен!
 
 #include <stdio.h>
 
 /* (c) VLV */
 
 unsigned int Factorial(unsigned int n)
 {
 unsigned int i,f = 1;
 
 for(i = 2; i <= n; i++) f *= i;
 
 return f;
 }
 
 //-----------------------------------------------
 // Generate combination i from n! combinations
 // 
 //
 void GetCombination(unsigned int *c, unsigned int n, unsigned int i)
 {
 unsigned int j,k,l,m;
 
 for(k = 0; k < n; k++) c[k] = n;
 
 m = 0;
 j = Factorial(n);
 for(k = n; k >= 1; k--)
  {
  j /= k;
  l = i/j;
  i -= l*j;
  l++;
  do {
     do { 
        if(++m == n) m = 0; 
        } while(c[m] != n);    
     } while(--l);
  c[m] = k-1; 
  }
 }
 
 //--------------------------------------------
 // 
 #define N 5
 
 void main(void)
 {
 unsigned int i,j,Nfact;
 unsigned int c[N];
 
 Nfact = Factorial(N);
 
 for(i=0;i<Nfact;i++)
  {
  GetCombination(c, N, i);
  
  printf("\n");
  for(j=0;j<N;j++) printf(" %u",c[j]); 
 
  }
 
 printf("\n");
 }
 
 VLV
 
 "Все построено на силах природы с разрешения месткома" (c) Булгаков
 
 --- ifmail v.2.15dev5
  * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 перебор комбинаций   slavik levchenko   06 Jul 2003 10:54:23 
 перебор комбинаций   Vladimir Vassilevsky   06 Jul 2003 17:57:34 
Архивное /ru.algorithms/3300c20ab38e.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional