Kombinasi
December 13th, 2006 by mbro
Jika dalam sebuah ruang pertemuan terdapat 4 orang dan masing-masing orang saling bersalaman tidak lebih dari satu kali dengan orang yang sama, maka akan terjadi 6 salaman.

Jumlah pasangan orang yang bersalaman ini dapat dihitung dengan rumus kombinasi n!/((n-m)! x m!). Dimana n adalah jumlah keseluruhan orang, dan m adalah jumlah orang dalam satu kelompok (dalam kasus ini n = 4 orang dan m = 2 orang).
Buat program untuk menampilkan daftar kombinasi yang mungkin dari n data untuk dikelompokkan per-m data.
Aturan
Soal terdiri dari beberapa test case. Setiap test case dipisah dengan satu baris kosong. Test case berupa inputan n dan m ( 0 < n < 10 ).
Tampilkan output (jawaban) berupa daftar kombinasi yang terurut (angka lebih kecil harus berada disebelah kiri). Lebih jelasnya, lihat contoh.
Contoh Soal
4 2 5 4
Contoh Jawaban
12 13 14 23 24 34 1234 1235 1245 1345 2345
Soal
6 4 4 1 8 3
P Says
Procedure TForm1.DoKombinasi(n,m,level,aa:integer;output:String);
var a:integer;
begin
if level>m then
begin
memo1.lines.add(output);
end else
begin
for a:=aa+1 to n do
begin
DoKombinasi(n,m,level+1,a,output+inttostr(a));
end;
end;
end;
Procedure TForm1.Kombinasi(n,m:integer);
begin
DoKombinasi(n,m,1,0,”);
end;
Jul 15th, 2007 at 4:47 am