Tin học [c++] bài tập tổ hợp

Stella2

Học sinh mới
Thành viên
11 Tháng một 2018
33
7
6
22
Cần Thơ
Nguyen quang dieu
[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Giúp với ạ
1/ cho 2 số tự nhiên n,k.Sắp xếp các tổ hợp chập K của N số nguyên dương đầu tiên theo thứ tự từ điển và đánh thứ tự từ 1 đến hết. Hãy tìm tổ hợp có thứ tự từ điển thứ M.
ví dụ:
Dữ liệu vào:
6 4 12
Kết quả:
2 3 4 6
2/ Cho dãy số nguyên A gồm N phần tử đôi một khác nhau. Từ dãy A chọn ra K phần tử và giữ nguyên thứ tự như trong A tạo thành một dãy con.Sắp xếp tất cả các dãy con K phần tử theo thứ tự từ điển.
Yêu cầu:
a. Hãy tìm dãy con có thứ tự từ điển thứ M
Ví dụ:
Dữ liệu vào:
6 4 8
7 9 5 3 2 4
Kết quả:
7 9 3 4
b. Cho 1 dãy con K phần tử của dãy A. Hãy cho biết thứ tự từ điển của dãy con đó.
Ví dụ:
Dữ liệu vào:
6 4
7 9 5 3 2 4
7 9 3 4
Kết quả:
8
 

son_gohan

Học sinh
Thành viên
1 Tháng tư 2017
69
55
36
Bài 1:
[TEX]#include "stdafx.h" #include "stdio.h" #include "conio.h" int main(void) { int n, k, m, count = 0; int x[100], i, j; int f[100]; printf_s("Nhap n, k, m: "); scanf_s("%d %d %d", &n, &k, &m); for (i = 1; i <= k; i++){ x = i; } do{ printf("%d. ", ++count); j = 0; for (i = 1; i <= k; i++){ if (count == m){ j++; f[j] = x; } printf("%d ", x); } printf("\n"); i = k; while ((i > 0) && (x == n - k + i)){ i--; } if (i > 0){ ++x; for (j = i + 1; j <= k; j++){ x[j] = x[j - 1] + 1; } } } while (i > 0); printf("\nTo hop co thu tu tu dien %d la: ", m); for (i = 1; i <= k; i++){ printf_s("%d ", f); } _getch(); return 0; }[/TEX]
Tham khảo từ "Giải thuật và lập trình" - Lê Minh Hoàng
 
  • Like
Reactions: Coco99
Top Bottom