Tài Liệu Phương Pháp Giải Một Số Bài Toán Chuỗi Con Bằng Ngôn Ngữ Lập Trình C++.Pdf

31 2 0
Tài Liệu Phương Pháp Giải Một Số Bài Toán Chuỗi Con Bằng Ngôn Ngữ Lập Trình C++.Pdf

Đ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 SỞ GIÁO DỤC & ĐÀO TẠO NGHỆ AN TRƢỜNG THPT KIM LIÊN SÁNG KIẾN KINH NGHIỆM Đề tài “PHƢƠNG PHÁP GIẢI MỘT SỐ BÀI TOÁN CHUỔI CON BẰNG NNLT C ++ ” Lĩnh vực Tin học 1 of 98 Tng hp các án, khóa lun, tiu lun[.]

1 of 98 SỞ GIÁO DỤC & ĐÀO TẠO NGHỆ AN TRƢỜNG THPT KIM LIÊN SÁNG KIẾN KINH NGHIỆM Đề tài: “PHƢƠNG PHÁP GIẢI MỘT SỐ BÀI TOÁN CHUỔI CON BẰNG NNLT C++” Lĩnh vực: Tin học Tng hp án, khóa lun, tiu lun, chuyên lun tt nghip i hc v chuyên ngành: Kinh t, Tài Chính & Ngân Hàng, Cơng ngh thơng tin document, khoa luan, tieu luan, 123 of 98 SỞ GIÁO DỤC & ĐÀO TẠO NGHỆ AN TRƢỜNG THPT KIM LIÊN SÁNG KIẾN KINH NGHIỆM Đề tài: “PHƢƠNG PHÁP GIẢI MỘT SỐ BÀI TOÁN CHUỔI CON BẰNG NNLT C++” Lĩnh vực: Tin học Giáo viên: Nguyễn Quang Hùng – Nguyễn Thị Lƣu Trƣờng THPT Kim Liên Năm học: 2022-2023 Số điện thoại: 0973484114 - 0914527656 Tng hp án, khóa lun, tiu lun, chuyên lun tt nghip i hc v chuyên ngành: Kinh t, Tài Chính & Ngân Hàng, Công ngh thông tin document, khoa luan, tieu luan, 123 of 98 MỤC LỤC PHẦN ĐẶT VẤN ĐỀ: ……………………………………………………2 Lý chọn đề tài: ……………………………………………… …2 Tính cấp thiết đề tài: ……………………………………………3 Tính đề tài: ……………………………………………… Khả ứng dụng triển khai đề tài: ………………………… Đối tượng phạm vi nghiên cứu: …………………………………3 PHẦN NỘI DUNG NGHIÊN CỨU …………… ……………………… Cơ sở khoa học: …………………………………………………… Thực trạng vấn đề: …………………………………………… Phương hướng giải : ……………………………………….5 3.1 Một số định hướng để viết code cho toán xử lý chuổi:…….5 3.2 Vận dụng định hướng để giải số toán kiểu chuổi:……… 13 Khảo sát cấp thiết tính khả thi giải pháp:…… ………… 26 PHẦN KẾT LUẬN VÀ KHUYẾN NGHỊ: ……………… …………… 28 TÀI LIỆU THAM KHẢO: …………………………………………… …29 Tng hp án, khóa lun, tiu lun, chuyên lun tt nghip i hc v chun ngành: Kinh t, Tài Chính & Ngân Hàng, Cơng ngh thông tin document, khoa luan, tieu luan, 123 of 98 PHẦN I ĐẶT VẤN ĐỀ Lý chọn đề tài Chúng ta bước triển khai Chương trình giáo dục phổ thơng mới, mơn Tin học ngày khẳng định vai trị chủ đạo việc trang bị cho người học khả tìm kiếm, tiếp nhận, mở rộng tri thức sáng tạo thời đại cách mạng công nghiệp lần thứ tư tồn cầu hóa Trong q trình giảng dạy chúng tơi dành nhiều thời gian để tìm kiếm, sưu tầm, phân loại số tập xử lý chuổi Nên nghiên cứu viết đề tài “PHƢƠNG PHÁP GIẢI MỘT SỐ BÀI TỐN CHUỔI CON BẰNG NNLT C++” nhằm hệ thống hóa toàn kiến thức liệu kiểu chuổi để giúp giáo viên học sinh sử dụng việc dạy học Khi trao đổi với đồng nghiệp trường số giáo viên trường khác khu vực, chúng tơi nhận thấy cịn nhiều giáo viên dạy vấn đề xử lý chuổi khó khăn đưa tập code viết NNLT C++, mạnh dạn trao đổi kinh nghiệm Rất mong đồng nghiệp nhận xét, góp ý để đề tài chúng tơi ngày hồn thiện ứng dụng rộng rãi thực tiễn Các toán code mà đưa nhằm giới thiệu cho học sinh cách viết chưa phương án tối ưu để giải tốn cụ thể Tính cấp thiết đề tài Các tốn xử lý chuổi quan trọng lập trình, thường gây khó khăn cho học sinh bắt đầu làm quen Giáo viên bắt đầu viết C++ Vì việc đưa nhiều tốn code cần thiết Tính đề tài - Đưa nhiều tập chuổi code viết NNLT C++ - Đưa số định hướng để giải toán xử lý chuổi NNLT C++ Khả ứng dụng triển khai đề tài Đề tài tài liệu tham khảo bổ ích cho Học sinh, Giáo viên THPT đặc biệt Học sinh khá, giỏi Đối tƣợng phạm vi nghiên cứu 5.1 Đối tƣợng nghiên cứu - Học sinh THPT - Giáo viên trường THPT Tng hp án, khóa lun, tiu lun, chuyên lun tt nghip i hc v chuyên ngành: Kinh t, Tài Chính & Ngân Hàng, Cơng ngh thơng tin document, khoa luan, tieu luan, 123 of 98 - Các toán xử lý chuổi 5.2 Phạm vi nghiên cứu - Bám sát nội dung chương trình Tin học THPT - Mở rộng phù hợp với nội dung thi Học sinh giỏi Tỉnh Phƣơng pháp nhiệm vụ nghiên cứu 6.1 Phƣơng pháp nghiên cứu - Phương pháp phân tích, tổng hợp - Phương pháp thực nghiệm 6.2 Nhiệm vụ nghiên cứu Rút số kinh nghiệm để giải toán xử lý chuổi dạy tin học lớp 11 chương trình Tin học THPT PHẦN II NỘI DUNG NGHIÊN CỨU Cơ sở khoa học 1.1 Cơ sơ lý luận Để giải toán chuỗi cách tối ưu, học sinh phải biết khái niệm chuỗi con, thuật tốn thơng dụng; Học sinh phải có kỹ nhận dạng toán phát biểu nhiều dạng khác lựa chọn thuật toán thích hợp để giải +) Chuỗi gì? Trong lập trình, chuỗi dãy ký tự lưu trữ dạng mảng ký tự Ví dụ, chuỗi "hello" lưu trữ mảng char s[] = {'h', 'e', 'l', 'l', 'o', '\0'} +) Chuỗi gì? Một chuỗi chuỗi mà tạo từ chuỗi ban đầu cách lấy số ký tự liên tiếp chuỗi ban đầu Ví dụ, chuỗi "ell" tạo từ chuỗi "hello" cách lấy ký tự liên tiếp vị trí thứ +) Thuật tốn tìm chuỗi Để tìm chuỗi C++, ta sử dụng thuật toán Vét cạn, Quy hoạch động, phương pháp phát triển xâu Mỗi thuật tốn có cách hoạt động khác độ phức tạp thời gian khác nhau, tùy thuộc vào kích thước chuỗi ban đầu chuỗi cần tìm */ Một số dạng tốn thƣờng gặp: Dạng 1: Cho xâu ký tự S Yêu cầu: Tìm tất xâu S thoả mãn điều kiện Q Dạng 2: Cho xâu ký tự S Yêu cầu: Đưa đoạn ký tự xâu S thỏa mãn điều kiện Q Trong điều kiện Q có tính chất: Nếu xâu A Tng hp án, khóa lun, tiu lun, chuyên lun tt nghip i hc v chuyên ngành: Kinh t, Tài Chính & Ngân Hàng, Công ngh thông tin document, khoa luan, tieu luan, 123 of 98 thỏa mãn điều kiện Q thì xâu liên tục A thoả mãn điều kiện Q ta tính xâu A Dạng 3: Cho xâu ký tự S Yêu cầu: Tìm xâu dài S thỏa mãn điều kiện Q Trường hợp 1: Điều kiện Q có tính chất: Xâu A thỏa mãn điều kiện Q xâu A khơng thỏa mãn Q Trường hợp 2: Điều kiện Q có tính chất: Nếu xâu A thỏa mãn điều kiện Q xâu liên tục A thoả mãn tính chất Q ký tự A không xét vào xâu khác 1.2 Cơ sơ thực tiễn Chúng tìm tịi tốn chuổi con, nghiên cứu kỹ code đúc rút số kinh nghiệm cho thân trình dạy học Thực trạng Các toán xử lý chuổi toán Nhưng thực tế vấn đề dạy học kiểu chuổi NNLT C++, Giáo viên Học sinh gặp số khó khăn hạn chế Tng hp án, khóa lun, tiu lun, chuyên lun tt nghip i hc v chuyên ngành: Kinh t, Tài Chính & Ngân Hàng, Công ngh thông tin document, khoa luan, tieu luan, 123 of 98 Phƣơng hƣớng giải pháp 3.1 Một số định hƣớng để viết code cho toán xử lý chuổi viết NNLT C++ Dưới số định hướng viết code cho toán xử lý chuỗi C++: Sử dụng chuỗi đệ quy (Recursion): Đây phương pháp tiếp cận toán cách sử dụng hàm đệ quy để phân tích chuỗi ban đầu thành chuỗi Điều đặc biệt hữu ích việc tìm kiếm chuỗi phù hợp với mẫu chuỗi Sử dụng vòng lặp (Loop): Sử dụng vòng lặp để duyệt qua tất ký tự chuỗi ban đầu tạo chuỗi từ ký tự đến ký tự cuối chuỗi ban đầu Điều đặc biệt hữu ích việc tìm kiếm chuỗi có độ dài cố định Sử dụng thuật toán động (Dynamic Programming): Đây phương pháp tiếp cận toán cách sử dụng bảng để lưu trữ kết phụ thuộc vào toán giải trước Điều đặc biệt hữu ích việc giải tốn có quy mơ lớn Sử dụng thuật toán KMP (Knuth-Morris-Pratt): Đây thuật toán tối ưu cho việc tìm kiếm chuỗi phù hợp với mẫu chuỗi Thuật toán sử dụng bảng tiền xử lý để lưu trữ thông tin tiền tố hậu tố mẫu chuỗi sử dụng thơng tin để tìm kiếm chuỗi chuỗi ban đầu Sử dụng thư viện chuỗi (String Library): C++ cung cấp số thư viện chuỗi hữu ích, chẳng hạn thư viện , cho phép bạn thực thao tác chuỗi thông thường, chẳng hạn tìm kiếm chuỗi con, so sánh chuỗi cắt chuỗi Việc sử dụng thư viện chuỗi giúp tiết kiệm thời gian Phương pháp phát triển chuỗi cách để tách phần chuỗi ban đầu thành chuỗi mới, có độ dài nội dung khác Có nhiều cách để phát triển chuỗi C++, phương pháp chung bạn cần xác định vị trí bắt đầu độ dài chuỗi 3.2 Vận dụng định hƣớng để giải số toán Giáo viên đưa dạng tốn, phân tích đặc điểm tốn, ý tưởng thuật tốn ví dụ minh họa cho dạng Sau cho học sinh soạn thảo chương trình tiến hành chấm Tng hp án, khóa lun, tiu lun, chuyên lun tt nghip i hc v chuyên ngành: Kinh t, Tài Chính & Ngân Hàng, Cơng ngh thơng tin document, khoa luan, tieu luan, 123 of 98 Dạng 1: Bài toán duyệt theo phƣơng pháp vét cạn 1.1/ Bài tốn: Cho chuỗi kí tự S Hãy tìm tất chuổi S thoả mãn điều kiện Q 1.2/ Phân tích: Với tốn này, đề yêu cầu đưa tất chuỗi (các chuỗi lồng nhau, giao nhau) nên phải kiểm tra tất chuỗi Để kiểm tra hết ta phải duyệt theo phương pháp vét cạn 1.3/ Ý tưởng thuật toán: Để giải tốn C++, ta sử dụng phương pháp vét cạn, tức kiểm tra tất chuỗi S có thỏa mãn điều kiện Q hay không Cụ thể, ta duyệt qua tất vị trí i, j (i ≤ j) chuỗi S lấy chuỗi từ vị trí i đến j Sau đó, kiểm tra xem chuỗi có thỏa mãn điều kiện Q hay khơng Nếu có, ta lưu lại đoạn ký tự tìm tiếp tục duyệt đến vị trí Để kiểm tra chuỗi có thỏa mãn điều kiện Q hay khơng, ta cần định nghĩa điều kiện Ví dụ, điều kiện chuỗi có chứa chữ số, ta duyệt qua ký tự chuỗi kiểm tra xem ký tự có phải số hay khơng Nếu có ký tự số, ta coi chuỗi thỏa mãn điều kiện Q Sau duyệt qua tất vị trí chuỗi S, ta có tất đoạn ký tự thỏa mãn điều kiện Q Ta in đoạn kết thúc chương trình Dưới code cách giải toán C++ #include #include using namespace std; int main() { string s; getline(cin, s); // nhập xâu ký tự for (int i = 0; i < s.length(); i++) Tng hp án, khóa lun, tiu lun, chuyên lun tt nghip i hc v chuyên ngành: Kinh t, Tài Chính & Ngân Hàng, Cơng ngh thơng tin document, khoa luan, tieu luan, 123 of 98 { for (int j = i; j < s.length(); j++) { string sub = s.substr(i, j - i + 1); // lấy xâu từ vị trí i đến j // kiểm tra xâu có thỏa mãn điều kiện Q hay không if (/*Điều kiện Q*/) { cout

Ngày đăng: 03/10/2023, 15:12

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

Tài liệu liên quan