30/09/2018, 16:24

Hỏi về bài toán tổ hợp chập k của n phần tử sử dụng phương pháp đệ quy

Đề bài là tìm và xuất bộ cấu hình của tổ hợp chập k của n phần tử bất kỳ, thầy đã gợi ý cho em bài xuất cấu hình của tổ hợp chập k của n phần tử với n=1,2,…,n nhưng em làm mãi không ra , ai giúp em với ạ.
Đây là bài xuất cấu hình của tổ hợp chập k của n phần tử với n=1,2,…,n do thầy em gợi ý

#include<iostream.h>
void tohop(int i);
int x[1000];
int n,k;
int main()
{
cout<<"Nhap vao so phan tu n = ";cin>>n;
cout<<"Can lay to hop chap k = ";cin>>k;
tohop(1);
}
void xuat()
{
	for (int i=1;i<=k;i++)
	cout<<x[i]<<" ";
	cout<<endl;
}
void tohop(int i)
{
for (int j=x[i-1]+1;j<=n-k+i;j++)
	{
		 x[i]=j;
		 if (i==k)  	xuat();
		 else           tohop(i+1);
	}
}
Gió viết 18:35 ngày 30/09/2018

Thuật toán đúng rồi. Bạn thay iostream.h = iostream thôi. Và using namespace std; thì mới sử dụng dc cin, cout

#include<iostream>
using namespace std;
void tohop(int i);
int x[1000];
int n,k;
int main()
{
cout<<"Nhap vao so phan tu n = ";cin>>n;
cout<<"Can lay to hop chap k = ";cin>>k;
x[0]=0;
tohop(1);
}
void xuat()
{
	for (int i=1;i<=k;i++)
	cout<<x[i]<<" ";
	cout<<endl;
}
void tohop(int i)
{
for (int j=x[i-1]+1;j<=n-k+i;j++)
	{
		 x[i]=j;
		 if (i==k)  	xuat();
		 else           tohop(i+1);
	}
}
dactien020796 viết 18:33 ngày 30/09/2018

v làm sao để tìm tổ hợp chập k của bộ n số bất kỳ bạn. VD như n=4 có 4 ptử là 2 4 6 8 và k = 2 thì xuất ra 2 4, 2 6,…

Gió viết 18:28 ngày 30/09/2018

Lúc đó mảng x là mảng chứa chỉ số cần xuất ra.
Giả sử mảng nhập vào là a, có n phần tử. Cần in ra tổ hợp k.
viết lại hàm xuất như sau.

void xuat(){
  for( int i=1;i<=k; ++i){
    cout<<a[ x[i] -1] <<"  ";
  }
  cout<<endl;
}

Anh @ltd edit hộ em vs

Bài liên quan
0