Thuật Toán Sinh Kế Tiếp – Next Generation | **Xuân Thanh**
Có thể bạn quan tâm
1.Định nghĩa: Thuật toán sinh kế tiếp dùng để giải quyết các bái toán thỏa mãn các điều kiện:
– Xác định được trật tự các nghiệm.Biết được nghiệm đầu và nghiệm cuối cùng. – Xây dựng được thuật toán tử một nghiệm(cấu hình) chưa phải là nghiệm cuối cùng ta đều sinh ra một cấu hình đứng sau nó.(Next generation) 2.Thuật toán: procedure NextGeneration; beginwhile(cấu hình chưa phải là cuối cùng) do begin <Đưa ra cấu hình hiện tại> <Sinh ra cấu hình kế tiếp> end end; Algorithms in C++, Parts 1-43.Bài toán thí dụ Thuật toán sinh kế được áp dụng vào giải rất nhiều bài toán.Một thí dụ điển hình là liệt kê dãy nhị phân có độ dài biết trước. (1).Ta dễ dàng xác định được cấu hình đầu tiên là 0000….0(độ dài n) và dãy cuối cùng là 1111…1.Để xác định được dãy nhị phân đứng sau ta lấy dãy nhị phân hiện tại + 1(bit 1).Ví dụ: dãy nhị phân hiện tại 000 —> dãy kế tiếp 000+1=001. =>Thỏa mãn điều kiện thứ nhất. (2).Xây dựng thuật toán sinh kế tiếp: – khởi tạo dãy nhị phân ban đầu là 000…0 – Duyệt dãy nhị phân từ cuối, nếu phần tử cuối là bit 0 thì thay nó bằng bit 1.Còn các bit khác được duyệt qua được gán =1.(Next generation) while(chưa về đầu dãy nhị phân) do i=n; while(s[i]==1) do begin s[i]=0; i– end s[i]=1; end;
Code viết bằng C:
#include<stdio.h> #define MAX 100 int s[MAX]; int i,n,ok=1; void init(){ puts("Nhap vao do dai day nhi phan:"); scanf("%d",&n); for(i=1;i<=n;i++){ s[i]=0; } } void next_string(){ i=n; while(s[i]==1){s[i]=0;i--;}//Duyet qua cac phan tu con lai neu la 1 thi doi thanh 0 if(i==0){ok=0;} s[i]=1;//Neu phan tu dau la 0 thi doi sang 1 } void result(){ for(i=1;i<=n;i++){ printf("%4d",s[i]); } printf("\n"); } int main(){ init();//Thiet lap cau hinh ban dau while(ok){ result();//dua ra cau hinh hien tai next_string();//Sinh ra cau hinh ke tiep } } Algorithms in C++, Parts 1-4Technorati Tags: Thuật toán
Chia sẻ:
- X
Có liên quan
Từ khóa » Sinh Kế Tiếp
-
Thuật Toán Sinh Kế Tiếp – 1. Liệt Kê Các Hoán Vị Của N Phần Tử
-
30 [C++]. Hướng Dẫn Giải Bài Tập Thuật Toán Sinh Kế Tiếp
-
29 [C++]. Thuật Toán Sinh Kế Tiếp | Sinh Xâu Nhị Phân - YouTube
-
OmDoc | Hàm Sinh Kế Tiếp - OmOmega
-
THUẬT TOÁN SINH KẾ TIẾP - Tài Liệu Text - 123doc
-
Thuật Toán Sinh Kế Tiếp - Kỹ Thuật Lập Trình
-
Phương Pháp Sinh Kế Tiếp Có Thể Giải Quyết được Các Bài Toán Liệt Kê ...
-
Giải Thuật Và Lập Trình: §2. Phương Pháp Sinh (GENERATION)
-
[Thuật Toán] Phương Pháp Sinh ( Generation) | Cùng Suy Ngẫm
-
#30 [C++]. Bài Tập Thuật Toán Sinh Kế Tiếp - Daotaobanhang
-
9766. Hoán Vị Kế Tiếp | Lập Trình C/C++
-
Giải Thuật Liệt Kê Hoán Vị - Liệt Kê Hoán Vị Tiếp Theo Theo Thứ Tự Từ điển
-
[C++ Nâng Cao] Thuật Toán Sinh Hoán Vị, Liệt Kế Hoán Vị Kế Tiếp Lớn ...