Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2009, 21:04   #1
Пaвeл
Пользователь
 
Аватар для Пaвeл
 
Регистрация: 08.11.2008
Сообщений: 47
По умолчанию Сочетания.

Помогите пожалуйста!
Дан массив из N элементов. Как из него выбрать M элементов всевозможными вариантами (желательно без повторений).
Чтобы было понятнее, приведу пример:
N=5
M=3
элементы массива: 1 2 3 4 5
варианты:
1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
(Это без повторений (1 2 3 и 1 3 2 - одинаковые варианты))
Я не знаю, как должно быть, но вы делаете всё не правильно ©
Пaвeл вне форума Ответить с цитированием
Старый 11.03.2009, 21:46   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот оно )
Код:
uses crt;
type
mnoz = array[1..100] of integer;
var
M,N : integer;
i : integer;
mas : array[1..100] of integer;
a : mnoz;
ak : integer;

procedure fun(k : integer; b : mnoz; bk : integer; st : string);
 var i,j : integer;
 ts,buf : string;
 fl : boolean;
 begin
 if k=M+1 then
  begin
  writeln(st);
  exit;
  end;

 for i:=1 to N do
  begin
  fl := true;
  for j:=1 to bk do
   begin
   if i = b[j] then
     begin
     fl := false;
     break;
     end;
   end;
  {---}
  if not fl then continue;
  inc(bk);
  b[bk] := i;

  Str(mas[i],buf);
  ts := st;
  ts := ts + ' '+ buf;
  fun(k+1, b, bk, ts);

  end;
 end;

begin
clrscr;
write('Enter N: ');
readln(N);
write('Enter M: ');
readln(M);
if M>N then exit;

for i:=1 to N do
 begin
 write('Enter mas[',i,']: ');
 readln(mas[i]);
 end;
writeln;
writeln('----------');

ak := 0;
fun(1,a,ak,'');

readln;
end.

Пример ввода:
Код:
Enter N: 5
Enter M: 3
Enter mas[1]: 1
Enter mas[2]: 2
Enter mas[3]: 3
Enter mas[4]: 4
Enter mas[5]: 5

----------
 1 2 3
 1 2 4
 1 2 5
 1 3 4
 1 3 5
 1 4 5
 2 3 4
 2 3 5
 2 4 5
 3 4 5
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 12.03.2009, 07:57   #3
Пaвeл
Пользователь
 
Аватар для Пaвeл
 
Регистрация: 08.11.2008
Сообщений: 47
По умолчанию

Большое спасибо!
Я не знаю, как должно быть, но вы делаете всё не правильно ©
Пaвeл вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите сочетания клавишь для вывода произвольного символа. С.М.С Помощь студентам 2 01.01.2009 12:00
с помощью какого сочетания клавишь включается блокировка компьютера??? ЕвгениуS Операционные системы общие вопросы 5 30.12.2008 14:52
Сочетания клавиш внутри ячейки Konstantin_Z Microsoft Office Excel 4 22.08.2008 16:40