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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2008, 14:47   #1
zzzzz
Пользователь
 
Регистрация: 25.05.2007
Сообщений: 69
Вопрос Найти комбинации

Найти количество разных комбинаций из 12 чисел, группируя их по 6 чисел, так чтобы ни числа ни комбинации не повторялись.
Н-р:
1,2,3,4,5,6
1,2,3,4,5,7
1,2,3,4,5,8
...
8,9,10,11,12

1,2,3,4,5,6 и 2,3,6,1,5,4- считаются одинаковой комбинацией!
1,2,3,1,2,5- некорректная комбинация, т.к. есть повторы!
Количество разных вариантов вывести в Edit, а сами комбинации в stringgrid.
Помогите пожалуйста!
zzzzz вне форума Ответить с цитированием
Старый 29.09.2008, 18:56   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Самый простой и, наверное самый неоптимальный способ решить в лоб с помощью 6 циклов.
Вот код на Паскале, собственно алгоритм, может пригодится.
Число сочетаний (а это так называется) проверяется формулой 12!/(6!*6!)=924
Код:
var f:text;
    i,j,k,l,m,n,sum:integer;
begin
assign(f,'123.txt');
rewrite(f);
sum:=0;
for i:=1 to 7 do
for j:=i+1 to 8 do
for k:=j+1 to 9 do
for l:=k+1 to 10 do
for m:=l+1 to 11 do
for n:=m+1 to 12 do
   begin
    write(f,i:3,j:3,k:3,l:3,m:3,n:3);
    writeln(f,'');
    sum:=sum+1;
   end;
write(f,'Vsego = ',sum);
close(f);
readln
end.
puporev вне форума Ответить с цитированием
Старый 29.09.2008, 19:11   #3
zzzzz
Пользователь
 
Регистрация: 25.05.2007
Сообщений: 69
По умолчанию

Спасибо, но мне в Delphi нужно((((
zzzzz вне форума Ответить с цитированием
Старый 29.09.2008, 19:44   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот код в Делфи, хотя я думал что переделать по готовому алгоритму не проблема. Красоту на форме сами наведете.
Кстати вот здесь красивое решение этой задачи на все случаи жизни.
http://programmersforum.ru/showpost....14&postcount=1
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i,j,k,l,m,n,sum,row:integer;
begin
StringGrid1.ColCount:=6;
StringGrid1.RowCount:=1;
sum:=0;row:=0;
for i:=1 to 7 do
for j:=i+1 to 8 do
for k:=j+1 to 9 do
for l:=k+1 to 10 do
for m:=l+1 to 11 do
for n:=m+1 to 12 do
   begin
    StringGrid1.Cells[0,row]:=inttostr(i);
    StringGrid1.Cells[1,row]:=inttostr(j);
    StringGrid1.Cells[2,row]:=inttostr(k);
    StringGrid1.Cells[3,row]:=inttostr(l);
    StringGrid1.Cells[4,row]:=inttostr(m);
    StringGrid1.Cells[5,row]:=inttostr(n);
    inc(sum);
    inc(row);
    Stringgrid1.RowCount:=Stringgrid1.RowCount+1;
   end;
Edit1.Text:=inttostr(sum);
end;

end.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где найти s.mag БД в Delphi 8 30.06.2008 13:34
Имитация нажатия комбинации клавиш Zeraim Win Api 15 05.05.2008 20:35
Alt+F4 как отключить работу этой комбинации??? PROGR Общие вопросы Delphi 46 17.07.2007 14:18
Не могу найти KlErik Общие вопросы Delphi 4 11.01.2007 11:40