Advertisement
dmkozyrev

placements

Mar 29th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.10 KB | None | 0 0
  1. function placements(k, n)
  2. % Функция печатает на экран все размещения длины k из чисел 1..n
  3.     m = ones(1, k); % первое размещение
  4.     disp(m);
  5.    
  6.     last = false; % Переменная, отвечающая за выход из цикла
  7.     while ~last
  8.         [m, last] = next(m, k, n); % Получение следующего размещения
  9.         disp(m);
  10.     end
  11. end
  12.  
  13. function [m, last] = next(m, k, n)
  14. % Функция получает следующее размещение x длины k из элементов 1..n
  15.    
  16. % Поиск (с конца) элемента массива x , отличного от n
  17.     last = true;
  18.     for t = k:(-1):1
  19.         if ( m(t) < n )
  20.             last = false;
  21.             break;
  22.         end
  23.     end
  24.    
  25.  % Если не найдено ни одного отличного от n элемента, то данное размещение является последним
  26.     if (last) return; end
  27.  
  28.     m(t) = m(t) + 1;
  29.  
  30.     for i = t+1:k
  31.         m(i) = 1;
  32.     end
  33. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement