Four Algorithm: Next Generation, Recursion, Backtracking, Branchand Bounch

12 0 0
Four Algorithm: Next Generation, Recursion, Backtracking, Branchand Bounch

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1. Mô hình thuật toán sinh (Next Generation Algorithm) 1.1. Thuật toán tổng quát begin Bước1 (Khởi tạo): ; Bước 2 (Bước lặp): while () do ; ; endwhile; End.

BÁO CÁO VỀ 4 THUẬT TOÁN 1.Mô hình thuật toán sinh (Next Generation Algorithm) 1.1 Thuật toán tổng quát begin Bước1 (Khởi tạo): ; Bước 2 (Bước lặp): while () do ; ; endwhile; End 1.2 Ứng dụng với bài tập trên code.ptit 1.2.1 XÂU AB CÓ ĐỘ DÀI N 1.2.1.1 Lý do tiếp cận - Bài toán yêu cầu in ra các xâu AB có độ dài n, tương tự như in ra các xâu nhị phân  Ứng dụng trực tiếp thuật toán sinh kế tiếp (sinh nhị phân) 1.2.1.2 Source code 1 #include 2 using namespace std; 3 #define MAX 100 4 vector arr(MAX); 5 int n; 6 bool check = true; 7 8 void first() { 9 for(int i = 1; i t; 33 while(t ) { 34 cin >> n; 35 first(); 36 while(check) { 37 output(); 38 next(); 39 } 40 check = true; 41 cout > arr[i]; 10 tmp[i] = 0; 11 } 12 } 13 14 void next() { 15 int i = n - 1; 16 while( i >= 0 && tmp[i] == 1) { 17 tmp[i] = 0; 18 i ; 19 } 20 if(i < 0) 21 check = false;// stop 22 else 23 tmp[i] = 1; 24 } 25 26 void output() { 27 for(int i = 0; i < n; i++) 28 if(tmp[i] == 1) 29 sum += arr[i]; 30 if(sum == k) { 31 for(int i = 0; i < n; i++) { 32 if(tmp[i] == 1) 33 cout > k; 42 first(); 43 while(check) { 44 next(); 45 sum = 0; 46 output(); 47 } 48 cout > A[i]; 27 sort(A.begin(), A.end()); 28 vector B; 29 generate(A, B, 0, k); 30 return 0; 31 } 2.2.2 ĐẶT TÊN - 2 2.2.2.1 Lý do tiếp cận - Có thể coi bài toán là tìm tổ hợp k phần tử của n phần tử cho trước 2.2.2.2 Source code 1 #include 2 using namespace std; 3 4 void generatename(string& name, vector& chucai, int k, int tmp) { 5 if(k == 0) { 6 cout t; 21 while(t ) { 22 int n, k; 23 cin >> n >> k; 24 vector chucai(n); 25 for(int i = 0; i < n; i++) 26 chucai[i] = 'A' + i; 27 string name = ""; 28 generatename(name, chucai, k, 0); 29 } 30 } 3.Mô hình thuật toán quay lui (Backtracking Algorithm) 3.1 Thuật toán tổng quát void Backtracking(int i) { for(int j = ; j k; 31 generate(1); 32 } 33 return 0; 34 } 3.2.2 HAHAHA 3.2.2.1 Lý do tiếp cận - Khả năng 3.2.2.2 Source code 3.2.2.3 Lý do tiếp cận 3.2.2.4 Source code 1 #include 2 using namespace std; 3 int n; 4 vector vc; 5 char a[2] = {'A', 'H'}; 6 7 void output(){ 8 for(int i = 1; i > n; 29 if(n == 2) { 30 cout

Ngày đăng: 27/03/2024, 08:50

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan