Biểu diễn tập con k phần tử dưới dạng c1, c2,.., ck, trong đó 1< c1
mặc nhiên được chấp nhận mà không cần phải thêm điều kiện gì.
Chương trình cài đặt:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
int B[MAX], n, k, count = 0;
void Init(void){
printf("\n Nhap n="); scanf("%d", &n);
printf("\n Nhap k="); scanf("%d", &k);
B[0] = 0;
}
void Result(void){
int i; count++;
printf("\n Tap thu %d:", count);
for (i = 1; i <= k; i++){
printf("%3d", B[i]);
}
getch();
}
void Try(int i){
int j;
for (j = B[i - 1] + 1; j <= (n - k + i); j++){
B[i] = j;
if (i == k) Result();
else Try(i + 1);
}
}
void main(void){
clrscr();
Init();
Try(1);
}


0 Comment to "[Bài toán] Liệt kê các tập con k phần tử của tập n phần tử bằng thuật toán Back Track"
Post a Comment