1. Trang chủ
  2. » Khoa Học Tự Nhiên

Các thuật toán cơ bản trong lập trình

20 1,9K 47

Đ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

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 408,13 KB

Nội dung

Kiểm tra số nguyên tố + Định nghĩa: Là số nguyên lớn 1, có ước Các số ngun tố từ 1100: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 + Thuật toán: Để kiểm tra số nguyên n có phải số nguyên tố hay không, ta làm theo bước - Nếu n> KMP("abcabcabcabc", "cabc") Match at position Match at position Match at position Điểm thú vị cuối là, ký tự chuỗi s so sánh với nhiều gọi delay thuật tốn), tỉ lệ vàng! (đại lượng + Code hoàn chỉnh: Visual C# Code: using System; namespace Knuth_Morris_Pratt { class Test { private char[] s; private char[] p; public void Nhap() { Console.Write("Nhap xau S:"); string stdin1 = Console.ReadLine(); s = new char[stdin1.Length]; s = stdin1.ToCharArray(); Console.Write("Nhap xau P:"); string stdin2 = Console.ReadLine(); p = new char[stdin2.Length]; p = stdin2.ToCharArray(); } private int[] compute_MP_map() // map[i]=| border(p[0 i-1]) | { int m = p.Length; // p is the input pattern int[] MP_map = new int[m + 1]; // lưu ý ta phải tính map[0 m] // init MP_map[0] = -1; // hiểu // bay gio di tinh map[1 m] int i = 0; int j = MP_map[i]; while (i < m) { while (j >= && (p[i] != p[j])) j = MP_map[j]; j++; i++; MP_map[i] = j; } return MP_map; } private int[] compute_KMP_map() //thuật toán KMP cải tiến { int m = p.Length; int[] KMP_map = new int[m + 1]; int[] MP_map = compute_MP_map(); KMP_map[0] = -1; KMP_map[m] = MP_map[m]; for (int i = 1; i < m; i++) { int j = MP_map[i]; if (p[i] != p[j]) KMP_map[i] = j; else KMP_map[i] = MP_map[j]; } return KMP_map; } public void Morris_Pratt() { int[] map = compute_KMP_map(); int n = s.Length; int m = p.Length; int i = 0; string res = ""; for (int j = 0; j < { while ((i >= 0) i++; (i=m-1) i=-1 , lợi dụng if (i == m) { res += (j i = map[i]; } } Console.Write(res); } n; j++) && (p[i] != s[j])) i = map[i]; // Có khả xảy ra: hết chuỗi p điều m + 1).ToString() + " "; static void Main(string[] args) { Test object1 = new Test(); object1.Nhap(); object1.Morris_Pratt(); //Console.WriteLine("done"); Console.ReadLine(); } } } Liệt kê dãy nhị phân có độ dài n + Ví dụ: n=3 ta có dãy nhị phân sau Code: 0 0 1 1 0 1 0 1 1 1 + Tác giả: CayDan + Code: - Phương pháp sinh: C Code: void LKNhiPhan(int n) { int x[30]; for (int i=0; i=0) { for (i=0; i=0) && (x[i] == 1)) i ; if(i>=0) { x[i] = 1; for (int j= i+1; j

Ngày đăng: 27/08/2017, 14:30

TỪ KHÓA LIÊN QUAN

w