Vận dụng thuật toán 2 con trỏ vào giải một số bài toán bồi dưỡng học sinh giỏi, thi vào chuyên phan trên ngôn ngữ lập trình c++ và python

51 84 0
Vận dụng thuật toán 2 con trỏ vào giải một số bài toán bồi dưỡng học sinh giỏi, thi vào chuyên phan trên ngôn ngữ lập trình c++ và python

Đ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

MỤC LỤC Trang PHẦN I: ĐẶT VẤN ĐỀ Lý chọn đề tài 2 Mục đích nghiên cứu 3 Nhiệm vụ nghiên cứu đề tài Đối tượng nghiên cứu đề tài Phạm vi nghiên cứu đề tài PHẦN II: NỘI DUNG NGHIÊN CỨU Cơ sở lý luận 1.1 Giới thiệu 1.1.1 Con trỏ gì? 1.1.2 Làm để sử dụng thuật toán hai trỏ? 1.2 Một số dạng thuật toán hai trỏ 1.2.1 Hai trỏ, trỏ đầu trỏ cuối di chuyển vào gặp 1.2.2 Một trỏ di chuyển chậm trỏ di chuyển với tốc độ nhanh 1.2.3 Hai trỏ di chuyển hai mảng xâu 11 Cơ sở thực tiễn 15 2.1 Thực trạng vấn đề trước áp dụng đề tài 15 2.1.1 Đặc điểm tình hình 15 2.1.2 Thực trạng trước nghiên cứu 16 2.1.3 Các giải pháp giải vấn đề 17 2.2 So sánh cài đặt thuật toán trỏ số thuật toán khác 17 2.3 Rèn luyện kỹ vận dụng thuật toán trỏ để giải số toán đến nâng cao 28 2.3.1 Một số tập trỏ, trỏ đầu trỏ cuối di chuyển vào gặp 28 2.3.2 Một số tập trỏ di chuyển chậm trỏ di chuyển với tốc độ nhanh 31 2.3.3 Hai trỏ di chuyển hai mảng xâu 36 2.4 Bài tập tự giải có hướng dẫn 41 PHẦN III: KẾT LUẬN 48 Với mục tiêu đề đề tài làm 48 Hướng phát triển đề tài 48 Kiến nghị đề xuất 48 TÀI LIỆU THAM KHẢO 50 PHẦN I: ĐẶT VẤN ĐỀ Lý chọn đề tài Bộ trưởng Nguyễn Mạnh Hùng phát biểu: “Mỗi người phải biết ngôn ngữ: Tiếng mẹ đẻ để giữ gìn văn hóa truyền thống, Tiếng Anh để hội nhập quốc tế ngôn ngữ máy lập trình coding để giao tiếp người với máy” Điều khẳng định vai trị vị trí quan trọng Tin học tồn xã hội Vì người, học sinh cần hiểu trang bị kiến thức Tin học để theo kịp với thời đại, với phát triển xã hội Vì học tin cần trang bị kiến thức, kỹ lập trình để giải tốn dễ dàng Trong chương trình giáo dục phổ thơng 2018 ngơn ngữ lập trình pascal khơng đưa vào dạy học thay vào ngơn ngữ lập trình Python Ngồi Python C++ ngơn ngữ lập trình phổ biến chương trình dạy học tính ứng dụng ngôn ngữ nhiều, kỳ thi tin học trẻ, thi vào chuyên tin, học sinh giỏi tỉnh… Khi giải toán Tin học người lập trình ln mong muốn viết chương trình với thuật toán tối ưu, thời gian thực nhanh, nhớ hạn chế…Tuy nhiên, toán Tin học thường đa dạng, phong phú nên để tìm thuật tốn tối ưu phù hợp liệu toán việc khơng dễ dàng Trong lập trình tin học có nhiều phương pháp giải tốn để đảm bảo thời gian, không gian không dễ Vì lựa chọn thuật tốn để tối ưu quan trọng Qua trình giảng dạy, học tập, tìm tịi đặc biệt tham gia bồi dưỡng học sinh giỏi nhiều năm qua, tơi tích lũy số kinh nghiệm thuật toán trỏ Do đó, tơi định viết sáng kiến kinh nghiệm: “Vận dụng thuật toán trỏ vào giải số toán bồi dưỡng học sinh giỏi, thi vào chun phan ngơn ngữ lập trình C++ Python " Đề tài tập trung nghiên cứu thuật toán trỏ, đưa ứng dụng trỏ giải toán máy tính Nhằm giúp học sinh vận dụng thuật tốn linh hoạt, giúp cải thiện thời gian không gian gặp dạng tốn Để hồn thành nhiệm vụ đề tài, nghiên cứu nhiều sách chuyên đề Tin học dành cho học sinh giỏi, tài liệu trang web Tuy nhiên tài liệu trình bày cụ thể cách sử dụng thuật toán cách đầy đủ dễ hiểu Mục đích nghiên cứu - Đề tài nêu định hướng giúp học sinh tiếp cận thuật tốn trỏ để giải số toán, tối ưu phù hợp với liệu toán - Giúp học sinh tiếp cận ngơn ngữ lập trình C++ Python sớm, tốt - Từ bồi dưỡng học sinh lực giải vấn đề giải toán Tin học, đồng thời rèn luyện nâng cao kĩ lập trình cho em Đặc biệt học sinh tham gia dự thi học sinh giỏi cấp tỉnh THCS, THPT thi vào trường chuyên Nhiệm vụ nghiên cứu đề tài - Đề tài phân tích thuật toán dạng toán quen thuộc, so sánh độ phức tạp thuật toán định hướng lựa chọn thuật toán tối ưu trường hợp liệu cụ thể nhằm giải toán hiệu - Minh họa ví dụ, hình ảnh, video cụ thể Đồng thời liên hệ đề thi vào trường chuyên, đề thi học sinh giỏi tỉnh thời gian qua Đối tượng nghiên cứu đề tài - Độ phức tạp thuật toán giải pháp lựa chọn thuật toán tối ưu dạng toán quen thuộc ngơn ngữ lập trình C++ Python - Phương pháp bồi dưỡng lực giải vấn đề cho học sinh Phạm vi nghiên cứu đề tài - Chương trình Tin học THCS, THPT để bồi dưỡng học sinh giỏi Tin học thi vào trường chuyên THPT PHẦN II: NỘI DUNG NGHIÊN CỨU Cơ sở lý luận Giới thiệu thuật toán, bước tiếp cận với thuật tốn, ta sử dụng thuật tốn hai trỏ Trình bày dạng, phân tích cài chương trình cụ thể để bạn đọc dễ hiểu Qua vận dụng để giải toán sau 1.1 Giới thiệu “Khi lựa chọn thuật toán dùng để giải toán, thuật toán hiệu thuật toán đơn giản thực thi tốt nhất” Trong Cấu trúc liệu giải thuật thuật tốn hai trỏ thuật toán đơn giản hiệu Thường ứng dụng để giải tốn lập trình, thuật tốn phổ biến kỳ thi tin học Hai trỏ dạng thuật tốn hai trỏ lặp lại cấu trúc liệu hai đáp ứng điều kiện cần thiết Tuy nhiên; "thuật toán hai trỏ" có số khái niệm hạn chế Hơn nữa, thuật tốn đơn giản hiệu quả, biết sử dụng cách, mang lại nhiều hiệu Thuật toán hai trỏ thường gặp thi lập trình Cách tiếp cận tối ưu hóa thời gian chạy cách sử dụng số thứ tự (không thiết phải xếp) liệu Nó thường áp dụng danh sách (mảng) danh sách liên kết Điều thường sử dụng để tìm kiếm cặp mảng xếp Cách tiếp cận hoạt động không gian khơng đổi Mục đích thuật tốn giảm độ phức tạp giải pháp dựa O(n3) O(n2) thành giải pháp thời gian tuyến tính Trong đề tài này, xem xét khái niệm cung cấp ví dụ khác Lấy ví dụ minh họa số tập rèn luyện tư cách tiếp cận thuật toán từ đến nâng cao giúp các em va chạm dạng tập cách đa dạng hơn, để biết làm để áp dụng thuật tốn hai trỏ Ngồi chúng tơi cịn xây dựng hình ảnh, video cụ thể để mơ thuật tốn Qua người đọc dễ hiểu, dễ nắm bắt phương pháp cách tốt 1.1.1 Con trỏ gì? Một trỏ tham chiếu đến đối tượng Đối tượng lưu trữ địa nhớ có giá trị khác nằm nhớ máy tính, số trường hợp, phần cứng máy tính ánh xạ nhớ Nói cách đơn giản - biến lưu trữ địa cho mảng trỏ Ví dụ, chúng tơi tính tốn kích thước trỏ chương trình C++ Python Đặt câu hỏi thuật toán trỏ hai trỏ so sánh nào? Con trỏ lưu trữ địa đối tượng sử dụng thực tế để trỏ đến đối tượng khác cách sử dụng biến thuật toán hai trỏ Do đó, trường hợp này, chúng gọi trỏ Thuật tốn hai trỏ khơng khác tối ưu hóa kỹ thuật Nó làm giảm phức tạp thời gian cách sử dụng số loại thứ tự thay thiết phải xếp liệu 1.1.2 Làm để sử dụng thuật toán hai trỏ? Trước bắt đầu, nhớ hai trỏ thuật toán đại diện cho hai số, số lần di chuyển trỏ không phụ thuộc vào trỏ Các bước cách tiếp cận hai trỏ: Một số hình ảnh thuật tốn trỏ Như hình trên, cách tiếp cận hai trỏ có ba bước chính: Khởi tạo trỏ - Con trỏ đâu tùy thuộc vào yêu cầu tốn đặt ví trí xuất phát kết thúc cho hợp lí Chúng ta sử dụng hai trỏ bắt đầu vị trí tức bắt đầu mảng xâu, trỏ di chuyển chậm trỏ di chuyển nhanh sử dụng trỏ vị trí bắt đầu khác vị trí cuối Chuyển động trỏ - Điều định cách đưa cách tiếp cận toán, xác định giải pháp Con trỏ di chuyển theo hướng chúng di chuyển theo hướng ngược lại Mỗi lần di chuyển trỏ đơn vị, có trường hợp hai trỏ đứng lệch đơn vị Điều kiện dừng - Điều định dừng lại Khi hai trỏ gặp hai trỏ di chuyển chạm điểm cuối bên 1.2 Một số dạng thuật toán hai trỏ 1.2.1 Hai trỏ, trỏ đầu trỏ cuối di chuyển vào gặp Trong ngơn ngữ lập trình ta thường làm quen với nhiều dạng tập khác nhau, số dạng tập liên quan đến xếp bạn nghĩ đến ý tưởng hai trỏ Để bạn làm tập tốt kì thi bạn trang bị số thuật toán để ứng dụng giải toán tốt Dưới thuật toán hai trỏ: trỏ đầu trỏ cuối mảng chuổi tùy thuộc vào tốn, chọn di chuyển trỏ cho hợp lý theo yêu cầu tốn Thơng thường dạng thuật tốn mảng xếp thực bước sau: Bước 1: Gán trỏ i đầu, trỏ j cuối Bước 2: Hai trỏ di chuyển vào Bước 3: Điều kiện để hai trỏ dừng chúng gặp Hình ảnh minh họa: Ví dụ: Cho dãy số nguyên gồm N số hạng a1, a2, a3….aN Biết 0

Ngày đăng: 02/07/2022, 19:36

Hình ảnh liên quan

Một số hình ảnh của thuật toá n2 con trỏ. - Vận dụng thuật toán 2 con trỏ vào giải một số bài toán bồi dưỡng học sinh giỏi, thi vào chuyên phan trên ngôn ngữ lập trình c++ và python

t.

số hình ảnh của thuật toá n2 con trỏ Xem tại trang 5 của tài liệu.
Đường thẳng đứng trong hình đại diện cho mảng đầu vào [1,8,6,2,5,4,8,3,7]. Trong trường hợp này, giá trị lớn nhất mà thùng chứa có thể chứa nước (được hiển  thị dưới dạng phần màu xanh lam) là 49 - Vận dụng thuật toán 2 con trỏ vào giải một số bài toán bồi dưỡng học sinh giỏi, thi vào chuyên phan trên ngôn ngữ lập trình c++ và python

ng.

thẳng đứng trong hình đại diện cho mảng đầu vào [1,8,6,2,5,4,8,3,7]. Trong trường hợp này, giá trị lớn nhất mà thùng chứa có thể chứa nước (được hiển thị dưới dạng phần màu xanh lam) là 49 Xem tại trang 30 của tài liệu.

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

Tài liệu liên quan