Giúp học sinh lựa chọn và cài đặt chương trình tối ưu khi giải một số dạng bài tập về dãy con nhằm nâng cao chất lượng

24 324 0
Giúp học sinh lựa chọn và cài đặt chương trình tối ưu khi giải một số dạng bài tập về dãy con nhằm nâng cao chất lượng

Đ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

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ TRƯỜNG THPT ĐẶNG THAI MAI SÁNG KIẾN KINH NGHIỆM ĐỀ TÀI GIÚP HỌC SINH LỰA CHỌN VÀ CÀI ĐẶT CHƯƠNG TRÌNH TỐI ƯU KHI GIẢI MỘT SỐ DẠNG BÀI TẬP VỀ DÃY CON NHẰM NÂNG CAO CHẤT LƯỢNG HỌC SINH GIỎI MÔN TIN HỌC Ở TRƯỜNG THPT Người thực hiện: Hoàng Thị Mai Chức vụ: Giáo viên SKKN thuộc lĩnh vực: Tin học THANH HOÁ NĂM 2016 MỞ ĐẦU 1.1 Lý chọn đề tài Cùng với công tác bồi dưỡng học sinh thi Đại học – Cao đẳng thì công tác bồi dưỡng học sinh giỏi là một công tác mũi nhọn của nhà trường Thông qua kết quả học sinh giỏi phần nào khẳng định được vị thế của trường so với các trường bạn huyện nói riêng và tỉnh nói chung Tuy nhiên chất lượng học sinh giỏi môn Tin học của trường từ năm học 2013 – 2014 trở trước thấp, chưa có học sinh nào đạt được giải học sinh giỏi môn Tin học cấp tỉnh, mặc dù một số năm có học sinh tham gia thi Chất lượng học sinh giỏi mơn Tin học cịn thấp vậy, phần vì lực học sinh (do chất lượng đầu vào của học sinh thấp) phần vì phương pháp giảng dạy của giáo viên chưa phù hợp Do đó việc nâng cao chất lượng học sinh giỏi môn Tin học là cần thiết và cấp bách nhằm góp thêm vào thành tích chung của nhà trường Mặt khác, quá trình dạy bồi dưỡng học sinh giỏi gặp nhiều bài toán dãy Đây là dạng bài tập khó thường xuất hiện các đề thi học sinh giỏi môn Tin học Rất nhiều học sinh gặp dạng bài tập này bị điểm điểm không cao Nguyên nhân có thể nhiều đó có hai nguyên nhân bản là: chương trình cho kết quả output sai chương trình cho kết quả output với các bộ input có dữ liệu nhỏ với những bộ input có dữ liệu lớn thì chương trình chạy quá thời gian quy định là 1giây/1test (mặc dù kết quả output đúng) Trên thực tế đã có một số tài liệu đề cập đến các bài tập dãy con, các tài liệu này mới chỉ đưa thuật toán và chương trình giải một số bài tập cụ thể làm ví dụ minh họa cho một kỹ thuật lập trình nào đó nghiên cứu mà chưa khái quát dạng, chưa phân tích sâu cách tư duy, cách lựa chọn và cài đặt chương trình tối ưu Các chương trình mà một số tài liệu đưa khó hiểu và phức tạp không phù hợp lực học sinh Trường THPT Đặng Thai Mai Khi nghiên cứu các tài liệu này, không chỉ học sinh mà cả giáo viên lúng túng, mơ hồ, áp dụng một cách máy móc mà chưa biết nên chọn cách làm nào? Cách làm nào tối ưu hơn? Với mong muốn giúp học sinh giải quyết tốt các bài tập dãy và hiểu biết sâu sắc cách giải các bài tập này, đã dày công nghiên cứu, phân dạng các bài tập dãy con, trăn trở để tìm nhiều cách làm khác nhau, đánh giá độ phức tạp, đo thời gian thực hiện chương trình, để so sánh tìm chương trình tối ưu và dễ hiểu các chương trình đã đưa Từ đó nâng cao chất lượng bồi dưỡng học sinh giỏi môn Tin học Từ những lý đã mạnh dạn trình bày sáng kiến kinh nghiệm: “Giúp học sinh lựa chọn và cài đặt chương trình tối ưu giải một số dạng bài tập dãy nhằm nâng cao chất lượng học sinh giỏi môn Tin học trường THPT” 1.2 Mục đích nghiên cứu Đề tài này nghiên cứu nhằm giúp học sinh giải quyết tốt các bài toán dãy từ đó đổi mới cách tư lập trình, để đứng trước một bài toán cần giải quyết ngoài việc tìm thuật toán để cài đặt chương trình thì học sinh biết cách so sánh, đánh giá hiệu quả của thời gian thực hiện chương trình (hay cịn gọi là đợ phức tạp của thuật toán) và lựa chọn được chương trình phù hợp nhằm nâng cao chất lượng học sinh giỏi 1.3 Đối tượng nghiên cứu Sáng kiến kinh nghiệm có đối tượng nghiên cứu là các bài toán dãy con, được nghiên cứu nhiều cách làm, xét nhiều phương diện như: độ phức tạp, kết quả output, thời gian thực hiện chương trình 1.4 Phương pháp nghiên cứu Để trình bày sáng kiến kinh nghiệm này, đã sử dụng phối kết hợp nhiều phương pháp như: nghiên cứu tài liệu, thuyết trình, quan sát, điều tra bản, thực nghiệm so sánh, phân tích kết quả thực nghiệm, … phù hợp với môn học thuộc lĩnh vực Tin học NỘI DUNG NGHIÊN CỨU 2.1 Cơ sở lý luận Nghị quyết hội nghị Trung ương VIII khóa XI chỉ đạo: “Giáo dục và đạo tạo là Quốc sách hàng đầu, là nghiệp của Đảng và Nhà nước và của toàn dân Đầu tư cho giáo dục là đầu tư phát triển, được ưu tiên trước cho các chương trình, kế hoạch phát triển KT-XH; phát triển giáo dục và đạo tạo là nâng cao dân trí, đạo tạo nhân lực, bời dưỡng nhân tài Chuyển mạnh quá trình giáo dục từ chủ yếu trang bị kiến thức sang phát triển toàn diện lực và phẩm chất người học Học đôi với hành, lý luận gắn với thực tiễn, giáo dục nhà trường kết hợp với giáo dục gia đình và giáo dục xã hội” Nghị quyết hội nghị Trung ương VIII khóa XI đề mục tiêu: “Đối với giáo dục phổ thơng tập trung phát triển trí ṭ, thể chất, hình thành phẩm chất, lực công dân, phát hiện và bồi dưỡng khiếu, định hướng nghề nghiệp cho học sinh Nâng cao chất lượng giáo dục toàn diện, trọng giáo dục lý tưởng truyền thống đạo đức, lối sống, ngoại ngữ, tin học, lực và kỹ thực hành, vận dụng kiến thức vào thực tiễn, phát triển khả sáng tạo và tự học, khuyến khích học tập suốt đời, hoàn thành đào tạo giáo dục phổ thông giai đoạn sau 2015” Căn vào mục tiêu của môn Tin học, là phải cung cấp những tri thức bản, làm tảng để học sinh có thể tiếp tục sâu vào tìm hiểu và xây dựng khoa học Tin học tiếp thu những tri thức của các lĩnh vực kĩ thuật công nghệ tiên tiến, là các lĩnh vực của công nghệ thông tin Môn Tin học, cũng mọi môn học khác, vào mục tiêu để xác định nhiệm vụ cụ thể của môn học, tổ chức hoạt động đào tạo góp phần thực hiện mục tiêu giáo dục mà Đảng và nhà nước đề Nếu học sinh thực hiện tốt việc lựa chọn và cài đặt chương trình tối ưu giải các bài tập dãy nói riêng và các bài tập lập trình nói chung thì chất lượng học sinh giỏi được nâng cao 2.2 Thực trạng 2.2.1 Giới thiệu khái quát về trường Trường THPT Đặng Thai Mai được thành lập ngày: 20/08/2001, theo quyết định số: 2109/QĐ-UB của Chủ tịch UBND Tỉnh Thanh Hoá Trường nằm đường quốc lộ 1A, thuộc km 12 từ thành phố Thanh Hóa xuống phía Nam, tḥc địa bàn xã Quảng Bình, huyện Quảng Xương, tỉnh Thanh Hóa, nơi đa số phụ huynh học sinh làm nông nghiệp, điều kiện kinh tế cịn gặp nhiều khó khăn Các em học sinh có điều kiện tiếp xúc với máy tính nhà Ban đầu trường hoạt động theo mô hình trường bán công, chất lượng đầu vào của học sinh thấp, chủ yếu là học sinh trung bình, yếu Mặc dù ngày 31 tháng năm 2010 chủ tịch tỉnh Thanh hóa có quyết định chuyển đổi trường THPT Đặng Thai Mai sang hình thức công lập chất lượng đầu vào của học sinh thấp so với các trường huyện Trường hiện có 25 lớp, đã trang bị phòng học thực hành Tin học, có lắp đặt máy chiếu, đảm bảo sở vật chất đầy đủ cho việc học môn Tin học của nhà trường Trong những năm gần nhà trường cũng đã có nhiều thành tích nởi bật như: Năm học 2013 – 2014 được UBND Tỉnh Thanh Hóa tặng khen - QĐ số 3645/QĐ- UBND, ngày 30/10/2014 Năm học 2014 - 2015 đón cờ thi đua của UBND Tỉnh đơn vị dẫn đầu, QĐ số 3335/QĐ UBND tỉnh Thanh Hoá ngày 1/9/2015, Môn Tin học là môn học đặc thù có nhiều kiến thức khó lập trình pascal lớp 11 (đây là kiến thức thi học sinh giỏi tỉnh môn Tin học) thường bị xem nhẹ, bị xem là “môn phụ” Học sinh – phụ huynh chưa mặn mà, chưa quan tâm mực tới môn học nên việc lựa chọn và bồi dưỡng học sinh giỏi là vô cùng khó khăn 2.2.2 Thực trạng trước nghiên cứu Năm 2013 – 2014 có phối hợp cùng một giáo viên khác tham gia công tác bồi dưỡng học sinh giỏi tỉnh môn Tin học, cũng là năm đầu tiên tham gia công tác bồi dưỡng học sinh giỏi, việc dạy đội tuyển của chủ yếu dựa những kiến thức bản của sách giáo khoa, chưa trọng nhiều đến cải tiến chương trình tối ưu để chương trình chạy nhanh và chủ yếu là định hướng cho học sinh tìm được thuật toán (cách làm) để chương trình cho được kết quả mà thơi Chính vì giải quyết các bài toán dãy nói riêng và các bài tập lập trình pascal khác nói chung, học sinh và cả giáo viên thường chỉ làm việc với các bộ input có dữ liệu nhỏ dễ nhìn thấy kết quả output và thường không xét đến trường hợp input đặc biệt hay các input có dữ liệu lớn Dẫn đến bị điểm bài thi học sinh giỏi Đối với thi học sinh giỏi, dù kết quả output của thí sinh có giống hệt với cùng một bộ input, việc chênh lệch thời gian quyết định thí sinh có thể chiến thắng hay thất bại (yêu cầu thời gian xử lí chương trình khơng quá giây/1 test) Trong các kì thi học sinh giỏi gần đây, với cấu trúc đề câu tương ứng với số điểm 6, 7, 7, đó chỉ có không quá 50% các dữ liệu input là nhỏ vừa tầm thì việc thí sinh dù có làm hết cả câu đề thì nguy thất bại cao Bảng điểm các lần thi khảo sát chất lượng học sinh giỏi chuyên đề dãy (do tự tổ chức) năm học 2013 – 2014 chưa thực hiện đề tài: Họ tên Điểm lần Điểm lần Điểm lần Điểm lần Phạm Hà Uyên 2/10 3/10 2/10 3/10 Lê Đình Miền 3/10 3/10 4/10 4/10 Do đó kết quả học sinh giỏi năm 2013- 2014 chưa được mong muốn, có em học sinh tham gia thi học sinh giỏi Tin của trường thất bại không có em nào đạt giải (mặc dù thi các em phấn khởi vì nghỉ mình làm bài tốt, bài làm các em cho kết quả khoảng thời gian cho phép nhỏ giây với bộ input có dữ liệu nhỏ cịn bợ input có dữ liệu lớn thì bài làm cho kết quả thời gian chạy chương trình quá 1giây, nghĩa là bộ test có dữ liệu lớn các em bị điểm) Vấn đề đặt ra, là làm thế nào để lấy được điểm với các bộ input có dữ liệu lớn Muốn cần phải lựa chọn và cài đặt được chương trình hiệu quả (tối ưu) Chương trình hiệu quả là chương trình giải quyết được những bộ input có dữ liệu lớn, xác, dung lượng sử dụng bợ nhớ nhỏ, thời gian thực chương trình ngắn, Nhưng phạm vi sáng kiến kinh nghiệm của mình, chỉ nghiên cứu tiêu chí thời gian thực hiện chương trình để lựa chọn chương trình tối ưu, là tiêu chí quan trọng và được người ta quan tâm nhiều Ngoài ra, cũng ưu tiên lựa chọn chương trình ngắn gọn, dễ hiểu phù hợp với lực học sinh trường Thời gian thực hiện chương trình khơng chỉ phụ tḥc vào thuật toán mà cịn phụ tḥc vào cấu hình máy tính, kĩ xảo người lập trình, kích thước và tính chất của dữ liệu vào, Để cụ thể và tường minh có sử dụng phần mềm Themis để đo thời gian thực hiện của các chương trình với các bộ test cụ thể (có file test kèm theo) Các kết quả được thử nghiệm máy tính laptop ASUS, Ram 2GB, Processor AMDE-450 APU 1.65HZ 2.3 Các biện pháp sử dụng để giải vấn đề 2.3.1 Cơ sở lý thuyết 2.3.1.1 Dãy liên tiếp Dãy liên tiếp là dãy gồm các phần tử liên tiếp thuộc một dãy cho trước (dãy mẹ) Ví dụ: Cho dãy A gờm số nguyên {3,1,2,-6} Dãy số {2}; {1,2}; {3,1,2}; {3,1,2,-6}; … được gọi là các dãy liên tiếp của dãy A 2.3.1.2 Dãy chọn khơng liên tiếp Dãy có thể chọn không liên tiếp là dãy thu được sau xóa một số phần tử (có thể không xóa phần tử nào) của một dãy cho trước (dãy mẹ) và giữ nguyên thứ tự các phần tử cịn lại dãy Ví dụ: Cho dãy B gồm số nguyên {3,1,2,-6, 9} Dãy số {2}; {1,2}; {3,2}; {3,2,-6}; {3,1,2,-6,9}; … được gọi là các dãy có thể chọn không liên tiếp của dãy A 2.3.1.3 Độ phức tạp của thuật toán Giả sử ta có hai thuật toán P1 và P2 với thời gian thực hiện tương ứng là T1(n) = 100n2 (với tỷ suất tăng là n2) và T2(n) = 5n3 (với tỷ suất tăng là n3) Khi n > 20 thì T1 < T2 Sở dĩ là tỷ suất tăng của T nhỏ tỷ suất tăng của T2 Như một cách hợp lý là ta xét tỷ suất tăng của hàm thời gian thực hiện chương trình thay vì xét bản thân thời gian thực hiện Cho một hàm T(n), T(n) gọi là có độ phức tạp f(n) nếu tồn tại các C, N0 cho T(n) ≤ Cf(n) với mọi n ≥ N (tức là T(n) có tỷ suất tăng là f(n)) và kí hiệu T(n) là O(f(n)) (đọc là “ơ của f(n)”) Các hàm thể hiện độ phức tạp có các dạng thường gặp sau: log2n, n, nlog2n, n , n , 2n, n!, nn Trong cách viết, ta thường dùng logn thay thế cho log2n cho gọn Khi ta nói đến độ phức tạp của thuật toán là ta nói đến hiệu quả thời gian thực hiện chương trình nên có thể xem việc xác định thời gian thực hiện chương trình là xác định đợ phức tạp của thuật toán 2.3.2 Biện pháp lựa chọn cài đặt chương trình tới ưu giải sớ dạng tập về dãy Đối với dạng bài tập dãy đưa một bài toán ví dụ, bài toán ví dụ tơi trình bày từ cách (cả cách làm của học sinh và cách làm định hướng cho học sinh làm) Với phương châm của “ mưa dầm thấm lâu” ko hướng dẫn học sinh cách làm tối ưu mà phát vấn một dạng bài tập mới mà yêu cầu học sinh làm theo các trình tự sau: Bước 1: Xác định bài toán Bước 2: Suy nghĩ tìm thuật toán, viết chương trình (trên mơi trường Free Pascal), tính đợ phức tạp (Có thể nhiều cách) Bước 3: Trao đổi cách làm của mình với bạn để tìm cái hay cái dở Bước 4: Sử dụng phần mềm Themis-chấm tự động để chấm cách làm của mình (với 10 bộ test giáo viên đã xây dựng sẵn, bộ test cấu hình là điểm, thời gian chạy không quá giây) Bước 5: Nhận xét tối ưu của thuật toán Bước 6: Giáo viên định hướng cách làm tối ưu (nếu có) Bước 7: Sử dụng phần mềm Themis để chấm tất cả các cách đã viết chương trình Bước 8: Dựa vào kết quả, lựa chọn chương trình có độ phức tạp nhỏ nhất, thời gian thực hiện test nhỏ và chương trình ngắn gọn dễ hiểu Bước 9: Lập trình giải các bài tập tương tương với cách đã lựa chọn 2.3.2.1 Bài tập về dãy liên tiếp 2.3.2.1.1 Dạng 1: Các dãy không chung phần tử của dãy mẹ Các dãy không chung phần tử nào của dãy mẹ nghĩa là những phần tử của dãy mẹ đã thuộc dãy thỏa mãn này thì không thuộc các dãy thỏa mãn khác Ví dụ: Dãy mẹ gờm phần tử {2, 5, -9, -6, 0, -7, -5} Dãy {-9, -6}; {7, -5} là các dãy liên tiếp không chung phần tử nào của dãy mẹ Lưu ý: Dạng bài tập này áp dụng cho cả trường hợp một phần tử đầu của dãy này trùng với mợt phần tử cuối của dãy 2.3.2.1.1.1 Bài tốn bản: Cho một dãy A gồm N số nguyên (hoặc số thực) {a1, a2,…, aN} Dãy ai, ai+1,…, aj (1≤i≤j≤N) là dãy được tạo từ các phần tử liên tiếp của dãy A bắt đầu từ phần tử i và kết thúc phần tử j Hãy tìm độ dài dãy con, số lượng dãy con, liệt kê chỉ số các dãy con, liệt kê giá trị các phần tử dãy thõa mãn một điều kiện nào đó (Độ dài dãy là số lượng phần tử dãy con) Để giải dạng bài tập này ta có thể sử dụng nhiều thuật toán như: thuật toán vét cạn các dãy duyệt qua các phần tử của dãy sử dụng phương pháp quy hoạch động Đối với dạng bài tập này định hướng cho học sinh lựa chọn thuật toán duyệt qua các phần tử của dãy quy hoạch đợng  Mơ hình thuật toán: Cách Sử dụng phương pháp duyệt qua các phần tử của dãy: - Duyệt qua tất cả các phần tử của dãy nếu: + Thỏa mãn điều kiện, tăng đợ dài thêm 1, ngược lại: • Nếu dãy xét cần lưu thì: lưu lại độ dài, chỉ số đầu của dãy, xác định lại đợ dài, chỉ số đầu của dãy mới • Nếu dãy xét không cần lưu thì: lưu lại độ dài, chỉ số đầu của dãy mới Cách Sử dụng phương pháp quy hoạch động (Đây cách định hướng cho học sinh làm) - Gọi f[i] là độ dài dãy thỏa mãn điều kiện có phần tử cuối là a[i], i=1 n - Gán giá trị độ dài dãy trường hợp đơn giản: f[0]:=0; f[1]:=1 - Tính f[i] nhờ các giá trị bài toán đã tính từ trước f[i-1], f[i-2], - Kết quả bài toán là tổng hợp kết quả từ các bài toán f[i] (i=1,2, ,n) 2.3.2.1.1.2 Bài tốn ví dụ Cho mợt dãy A gờm N số nguyên {a1, a2,…, aN} Dãy ai, ai+1,…, aj (1≤i≤j≤N) là dãy được tạo từ các phần tử liên tiếp của dãy A bắt đầu từ phần tử i và kết thúc phần tử j Yêu cầu: Hãy tìm độ dài và liệt kê giá trị phần tử của dãy dài tạo thành cấp số cộng có công sai d Dữ liệu vào: File văn bản dayconcsc.inp gờm: - Dịng đầu ghi giá trị N, d (2≤N≤10000; 0≤d≤500 ) - Dịng sau gờm N số nguyên{a1, a2,…, aN} (-106≤ai≤106) số cách một dấu cách Dữ liệu ra: File văn bản dayconcsc.out gồm - Dịng đầu ghi đợ dài dãy và số dãy thỏa mãn - Dòng tiếp theo ghi giá trị các phần tử dãy (Chú ý: Nếu không có dãy nào thỏa mãn thì ghi 0) Ví dụ: Dayconcsc.inp Dayconcsc.out Cách 1: Khi gặp 94 32 bài toán này thông 10 10 thường học sinh 159 sử dụng phương pháp vét cạn các dãy sau:  Mô hình thuật toán: For i:=1 to n For k:=1 to n For j:=1 to n-i+1 For j:=1 to n-k+1 Begin begin {Xét tất cả dãy bắt đầu j:=i+k-1; từ vị trí i có độ dài j} {Xét tất cả dãy end; bắt đầu từ vị trí i đến vị trí j với đợ dài k} end;  Cài đặt chương trình: Program c1_dayconcsc; Type km=array[0 10001] of longint; Const fi='dayconcsc.inp'; fo='dayconcsc.out'; Var a,cs:km; dmax,i,j,n,k,d:longint; Procedure inday(b:km;m,l:longint); Var i:integer; Begin for i:=m to m+l-1 write(b[i],' '); writeln; End; Function kt(b:km;m,l:integer):boolean; Var i:integer; Begin for i:=m to m+l-2 if b[i+1]-b[i]d then exit(false); exit(true); End; BEGIN assign(input,fi);reset(input); assign(output,fo);rewrite(output); readln(n,d); for i:=1 to n read(a[i]); {tim dai va chi so dau day thoa man} dmax:=0; k:=0; for i:=1 to n-1 for j:=2 to n-i+1 if kt(a,i,j) then begin if j>dmax then begin dmax:=j;k:=0; end; if j=dmax then begin k:=k+1;cs[k]:=i; end; end; {in ket qua} if dmax=0 then write('0') else begin writeln(dmax,' ',k); for i:=1 to k inday(a,cs[i],dmax); end; close(input); close(output); END Sử dụng phần mềm Themis – chấm bài tự động Ta đo được thời gian thực hiện test cụ thể sau: (có file test và code kèm theo) Cách Độ phức Test01 tạp (giây) 0(n2) 0.1924 Test02 (giây) 0.107 Test03 (giây) 0.258 Test04 (giây) 0.269 Test05 (giây) 6.930 Test06 (giây) Test07 (giây) Test08 (giây) Test09 (giây) Test10 (giây) 89.9473 >100 >100 >100 >100 Với cách lấy 40% số điểm câu Vì mợt số test có liệu lớn chạy thời gian Cách 2: Thuật toán duyệt qua các phần tử của dãy mẹ  Mô hình thuật toán: - Khởi tạo: dmax=1; dem=1; dau=1; a[n+1]=a[n]+d+1;k=0; {Biến dmax lưu độ dài max dãy, biến dau lưu giá trị đầu dãy, biến k lưu số lượng dãy thỏa mãn} - For i:=1 to n Nếu a[i+1]-a[i]=d thì tăng biến dem, ngược lại: Nếu dem>dmax thì begin dmax=dem;k=1;dem=1;cs[k]=dau;dau=i+1; end, ngược lại: Nếu dem=dmax thì begin inc(k);cs[k]=dau;dau=i+1;dem=1; end, ngược lai: begin dem=1; dau=i+1; end;  Cài đặt chương trình: Program c2_dayconcsc; Const fi='dayconcsc.inp'; fo='dayconcsc.out'; Var a,cs:array[0 10001] of longint;dmax,dem,i,j,n,dau,k,d:longint; BEGIN assign(input,fi);reset(input);assign(output,fo);rewrite(output); readln(n,d); for i:=1 to n read(a[i]); {tim dai dmax va chi so dau cac day thoa man} k:=0;dmax:=1;dem:=1; dau:=1;a[n+1]:=a[n]+d+1; For i:= to n begin if a[i+1]-a[i]=d then inc(dem) else begin if dem>dmax then begin dmax:= dem; k:=1;cs[k]:=dau; dem:=1;dau:=i+1; end else if dem=dmax then begin inc(k);cs[k]:=dau;dau:=i+1;dem:=1;end else begin dem:=1;dau:=i+1;end; end; end; {in ket qua} if dmax=1 then write(0) else begin writeln(dmax,' ',k); for j:=1 to k Begin for i:=cs[j] to cs[j]+dmax-1 write(a[i],' '); writeln; End; end; close(input); close(output); END Sử dụng phần mềm Themis – chấm bài tự động Ta đo được thời gian thực hiện test cụ thể sau: (có file test và code kèm theo) Cách Độ phức Test01 tạp (giây) 0.087 0(n) Test02 (giây) 0.088 Test03 (giây) 0.087 Test04 (giây) 0.1116 Test05 (giây) 0.091 Test06 (giây) Test07 (giây) Test08 (giây) Test09 (giây) Test10 (giây) 0.0919 0.114 0.1210 0.1335 0.1190 10 Với cách có thể lấy 100% số điểm câu Tuy nhiên liệu vào lớn n=108 có một số test yếu nên không lấy điểm tối đa Cách 3: Dùng quy hoạch động  Mô hình thuật toán - Gọi f[i] là độ dài dãy tạo thành cấp số cộng công sai d có chỉ số cuối là i - Ta dễ dàng nhận thấy bài toán sở : f[1]=1 ; - Công thức quy hoạch động là : - Công thức quy hoạch động : Nếu a[i+1]-a[i]=d thì f[i+1]=f[i], ngược lại f[i+1]=1 - Kết quả bài toán: Max(f[i+1]) với i=1,2, ,n-1  Cài đặt chương trình: Program c3_dayconcsc; Const fi='dayconcsc.inp'; fo='dayconcsc.out'; Var a,cs,f:array[0 10001] of longint; dmax,i,n,j:integer; k,d:longint; BEGIN assign(input,fi);reset(input);assign(output,fo);rewrite(output); readln(n,d); for i:=1 to n read(a[i]); f[1]:=1; dmax:=0; k:=1; for i:=1 to n-1 begin if a[i+1]-a[i]=d then f[i+1]:=f[i]+1 else f[i+1]:=1; if f[i+1]>dmax then begin dmax:=f[i+1];k:=1;cs[k]:=i+1; end else if f[i+1]=dmax then begin inc(k);cs[k]:=i+1; end; end; {in ket qua} if dmax=1 then write('0') else begin writeln(dmax,' ',k); for j:= to k begin for i:=cs[j]-dmax+1 to cs[j] write(a[i],' '); writeln; end; end; close(input); close(output); End Sử dụng phần mềm Themis – chấm bài tự động Ta đo được thời gian thực hiện test cụ thể sau: (có file test và code kèm theo) Cách Độ phức Test01 tạp (giây) 0.083 0(n) Test02 (giây) 0.070 Test03 (giây) 0.077 Test04 (giây) 0.069 Test05 (giây) 0.075 Test06 (giây) Test07 (giây) Test08 (giây) Test09 (giây) Test10 (giây) 0.0797 0.1046 0.1057 0.1162 0.1002 Với cách có thể lấy 100% số điểm câu Nếu liệu vào lớn n=108 cách lấy điểm tối đa So sánh kết quả từ bảng và kết quả chấm điểm tốn ví dụ (của 11 dạng 1) phần mềm Themis của cách sau (mỗi test thời gian chạy không giây điểm): Dễ dàng nhận thấy cách là tối ưu cả mà chương trình ngắn gọn dễ cài đặt phù hợp với lực học sinh trường Do giải các bài tập dạng này ta nên lựa chọn cách thứ Cách này có thể lấy được điểm với dãy có số phần tử lớn lên đến n=108 (Tuy nhiên học sinh có thể lựa chọn cách để giải tốn lấy 100% số điểm n0; Khởi tạo: f[0]=0; dmax=0; - Công thức quy hoạch động: Nếu a[i]>0 thì f[i]=f[i-1]+1, ngược lại f[i]=0;  Code tham khảo: Program Dayconduong; Const fi='dayconduong.inp'; fo='dayconduong.out'; Var a,cs,f:array[0 10001] of longint; dmax,i,n,j:integer; k:longint; 13 BEGIN assign(input,fi);reset(input);assign(output,fo);rewrite(output); readln(n); for i:=1 to n read(a[i]); f[0]:=0; dmax:=0; k:=1; for i:=1 to n begin if a[i]>0 then f[i]:=f[i-1]+1 else f[i]:=0; if f[i]>dmax then begin dmax:=f[i];k:=1;cs[k]:=i; end else if f[i]=dmax then begin inc(k);cs[k]:=i; end; end; {in ket qua} if dmax=0 then write('0') else begin writeln(dmax,' ',k); for j:= to k begin for i:=cs[j]-dmax+1 to cs[j] write(a[i],' '); writeln; end; end; close(input); close(output); End 2.3.2.1.2 Dạng 2: Các dãy chung phần tử của dãy mẹ Các dãy có thể chung phần tử của dãy mẹ nghĩa là những phần tử của dãy mẹ đã thuộc dãy thỏa mãn này thì có thể thuộc khơng tḥc các dãy thỏa mãn khác Ví dụ: Dãy mẹ gồm phần tử {1,2,3,6,9,-6,8} Dãy {1,2,3}; {1,2,3,6}; {-6,8} là các dãy có thể chung phần tử của dãy mẹ 2.3.2.1.2.1 Bài toán Cho một dãy A gồm N số nguyên {a1, a2,…, aN} Dãy ai, ai+1,…, aj (1≤i≤j≤N) là dãy được tạo từ các phần tử liên tiếp của dãy A bắt đầu từ phần tử i và kết thúc phần tử j Tìm các dãy thõa mãn một điều kiện nào đó Để giải dạng bài tập này ta có thể sử dụng thuật toán vét cạn các dãy sử dụng phương pháp quy hoạch động Đối với dạng bài tập này định hướng cho học sinh lựa chọn thuật toán quy hoạch động  Mô hình thuật toán: - Gọi f[i] là giá trị dãy (tùy điều kiện bài toán) từ phần tử thứ đến phần tử thứ i - Lập cơng thức tính giá trị dãy từ i đến j theo f[i] và f[j] - Xét tất cả các cặp số (i,j) hai vòng lặp sau: for i:= to n-1 for j:= i to n begin {Xét dãy từ phần tử i đến j thỏa mãn điều kiện tăng số 14 dãy, lưu số đầu, số cuối} end; 2.3.2.1.2.2 Bài tốn ví dụ Cho mợt dãy A gờm N số nguyên {a1, a2,…, aN} Dãy ai, ai+1,…, aj (1≤i≤j≤N) là dãy được tạo từ các phần tử liên tiếp của dãy A bắt đầu từ phần tử i và kết thúc phần tử j Yêu cầu: Hãy tìm dãy liên tiếp có tổng lớn Dữ liệu vào: File văn bản tonglt.inp gờm: - Dịng đầu ghi giá trị N (1≤N≤10000) - Dịng sau gờm N số nguyên{a1, a2,…, aN} (-106≤ai≤106) số cách một dấu cách Dữ liệu ra: File văn bản tonglt.out gồm - Dịng đầu ghi tởng các phần tử dãy và số lượng dãy - Dòng tiếp theo ghi giá trị các phần tử dãy Ví dụ: Tonglt.inp Tonglt.out 13 52 12 -34 14 11 -8 15 11 -7 -56 17 16 19 14 11 -8 15 11 17 16 19 Cách 1: Khi gặp bài toán này thông thường học sinh sử dụng phương pháp vét cạn các dãy sau:  Mô hình thuật toán: Giống mô hình thuật toán cách của tốn ví dụ dạng  Cài đặt chương trình: Type km=array[0 10001] of longint; Const fi='tonglt.inp';fo='tonglt.out'; Var a,dau,cuoi:km;i,j,n:integer; k:longint;t,tmax:int64; Function tong(b:km;m,l:integer):int64; Var i:integer; Begin tong:=0; for i:=m to m+l-1 tong:=tong+b[i]; End; BEGIN assign(input,fi);reset(input);assign(output,fo);rewrite(output); readln(n); for i:=1 to n read(a[i]); tmax:=a[1]; k:=0; for i:=1 to n-1 for j:=1 to n-i+1 begin t:=tong(a,i,j); if t>tmax then begin tmax:=t;k:=0; end; if t=tmax then begin k:=k+1;dau[k]:=i;cuoi[k]:=i+j-1; end; end; {in ket qua} 15 writeln(tmax, ' ',k); for i:=1 to k begin for j:=dau[i] to cuoi[i] write(a[j],' '); writeln; end; close(input); close(output); END Sử dụng phần mềm Themis Ta đo được thời gian thực hiện test cụ thể sau: (có file test và code kèm theo) Cách Độ phức Test01 tạp (giây) 0.065 0(n2) Test02 (giây) 0.276 Test03 (giây) 3.286 Test04 (giây) Test05 (giây) Test06 (giây) Test07 (giây) Test08 (giây) Test09 (giây) Test10 (giây) 73.555 >100 >100 >100 >100 >100 >100 Với cách học sinh lấy 20% số điểm Vì mợt số test có liệu lớn chạy thời gian Cách 2: Sử dụng phương pháp quy hoạch động  Mô hình thuật toán: - Gọi f[i] là tổng tất cả các phần tử từ đến i - Như dãy liên tiếp từ i đến j có tổng là: f[j]-f[i-1] - Xét tất cả các dãy từ i đến j vòng lặp: for i:= to n-1 for j:= i to n begin {Xét f[j]-f[i-1] thỏa mãn điều kiện tăng số dãy, lưu số đầu, số cuối} end;  Cài đặt chương trình: Const fi='tonglt.inp';fo='tonglt.inp'; Var a,f,dau,cuoi:array[0 100001] of longint; i,j,n,dem:longint;tmax,k:int64; Begin assign(input,fi);reset(input);assign(output,fo);rewrite(output); readln(n);for i:=1 to n read(a[i]); f[0]:=0; for i:= to n f[i]:= f[i-1]+a[i]; tmax:= a[1];k:=0; for i:= to n-1 for j:= i to n begin if f[j]- f[i-1] > tmax then begin tmax:= f[j] - f[i-1];k:=0;end; if f[j]-f[i-1] =tmax then begin inc(k);dau[k]:=i;cuoi[k]:=j; end; end; writeln(tmax,' ',k); for i:= to k begin for j:= dau[i] to cuoi[i] write(a[j], ' '); writeln; 16 end; close(input);close(output); END Sử dụng phần mềm Themis Ta đo được thời gian thực hiện test cụ thể sau: (có file test và code kèm theo) Cách Độ phức Test01 tạp (giây) 0.045 0(n) Test02 (giây) 0.077 Test03 (giây) 0.108 Test04 (giây) 0.102 Test05 (giây) Test06 (giây) Test07 (giây) 0.1452 0.2849 0.3125 Test08 (giây) 0.396 Test09 (giây) 0.495 Test10 (giây) 0.5471 Với cách học sinh lấy 20% số điểm Cách không nên sử dụng So sánh kết quả từ bảng và kết quả chấm điểm tốn Ví dụ (của dạng 2) phần mềm Themis của cách sau (mỗi test thời gian chạy không giây/ test điểm): Dễ dàng nhận thấy cách là tối ưu mà chương trình ngắn gọn dễ cài đặt phù hợp với lực học sinh trường Do giải các bài tập dạng này ta nên lựa chọn cách 2.3.2.1.2.3 Bài tốn áp dụng Bài 1: Cho mợt dãy A gồm N số nguyên {a1, a2,…, aN} và một số nguyên K Dãy ai, ai+1,…, aj (1≤i≤j≤N) là dãy được tạo từ các phần tử liên tiếp của dãy A bắt đầu từ phần tử i và kết thúc phần tử j Yêu cầu: Hãy tìm dãy liên tiếp có tổng các phần tử chia hết cho K Dữ liệu vào: File văn bản dayconchiam.inp gồm: - Dòng đầu ghi hai số nguyên N và M (1≤N≤10000 ; 1≤M≤1000 ) - Dịng sau gờm N số ngun{a1, a2,…, aN} (106≤ai≤106, ai0) số cách một dấu cách Dữ liệu ra: File văn bản dayconchiam.out gồm - Dòng đầu ghi số lượng dãy thỏa mãn - Dòng tiếp theo ghi giá trị các phần tử dãy thỏa mãn Ví dụ: dayconchiam.inp dayconchiam.out 43 1325 132  Thuật toán: Tương tự cách tốn ví dụ (của dạng 2) chỉ thay điều kiện f[j]17 f[i-1] mod k =0  Code tham khảo: {Sử dụng phương pháp quy hoạch động} Const fi='dayconchiak.inp';fo='dayconchiak.out'; Var a,f,dau,cuoi:array[0 100001] of longint; i,j,n,dem:longint;tmax,m,k:int64; Begin assign(input,fi);reset(input);assign(output,fo);rewrite(output); f[0]:=0;k:=0; readln(n,m);for i:=1 to n begin read(a[i]); f[i]:=f[i-1]+a[i]; end; for i:= to n-1 for j:= i to n if (f[j]- f[i-1]) mod m =0 then begin inc(k);dau[k]:=i;cuoi[k]:=j; end; {in ket qua} writeln(k); for i:= to k begin for j:= dau[i] to cuoi[i] write(a[j], ' '); writeln; end; close(input);close(output); END 2.3.2.2 Bài tốn về dãy chọn không liên tiếp phần tử 2.3.2.2.1 Bài tốn Cho mợt dãy A gờm N số nguyên {a1, a2,…, aN} Dãy ai, ai+1,…, aj (1≤i≤j≤N) là dãy thu được ta xóa một số phần tử (có thể không xóa phần tử nào và không được xóa hết) của một dãy cho trước (dãy mẹ) và giữ nguyên thứ tự các phần tử lại dãy Hãy tìm các dãy thỏa mãn một điều kiện nào đó Đối với dạng bài tập này định hướng cho học sinh lựa chọn thuật toán quy hoạch động là tối ưu cả  Thuật toán chung - Gán giá trị cho bài toán sở - Tính giá trị cho bài toán thứ i nhờ các bài toán đã tính trước đó - Kết quả bài toán là tổng hợp từ các bài toán ban đầu 2.3.2.2.2 Bài tốn ví dụ Cho mợt dãy A gồm N số nguyên {a 1, a2,…, aN} Dãy ai≤ai+1≤…≤ aj (1≤i≤j≤N) được gọi là dãy không giảm của dãy A Lưu ý các phần tử của dãy có thể chọn liên tiếp không liên tiếp từ các phần tử dãy A phải theo thứ tự Độ dài của dãy là số lượng phần tử của dãy đó Yêu cầu: Tìm độ dài lớn của dãy không giảm Dữ liệu vào: File văn bản dayconkogiam.inp gờm dịng: 18 - Dịng đầu chứa mợt số ngun dương N (1≤ N ≤ 104) - Dòng thứ hai chứa N số nguyên dương ((-105≤ai ≤ 105), giữa hai số cách một dấu cách Dữ liệu ra: File văn bản dayconkogiam.out gồm một số nguyên dương là kết quả bài toán Ví dụ: Dayconkogiam.inp Dayconkogiam.out 51645217  Thuật toán: - Gọi f[i] là độ dài dãy không giảm có phần tử cuối là a[i] - Dễ dàng nhận thấy: f[1]=1; - Ta có công thức quy hoạch động: f[i]=max(f[j])+1 nếu a[j]a[i] (j=1 i-1) - Kết quả bài toán là max(f[i]) (i=1 n)  Cài đặt chương trình: Const fi='dayconkogiam.inp'; fo='dayconkogiam.out'; Var a,b:array[1 10000] of longint; n,i,max:longint; Procedure xuli; var i,j,bmax:longint; begin b[1]:=1; for i:=2 to n begin bmax:=0; for j:=i-1 downto if (a[j]bmax) then bmax:=b[j]; b[i]:=bmax+1; end; end; Procedure timmax; var i:longint; Begin max:=b[1]; for i:=2 to n if b[i]>max then max:=b[i]; write(max); End; BEGIN assign(input,fi);reset(input); assign(output,fo);rewrite(output); readln(n); for i:=1 to n read(a[i]); xuli; timmax; close(input); close(output); END Sử dụng phần mềm Themis Ta đo được thời gian thực hiện test: Cách Độ phức Test01 tạp (giây) Test02 (giây) Test03 (giây) Test04 (giây) Test05 (giây) Test06 (giây) Test07 (giây) Test08 (giây) Test09 (giây) Test10 (giây) 19 0(n) 0.067 0.055 0.056 0.056 0.061 0.192 0.26 0.288 0.301 0.377 Từ bảng và kết quả chấm điểm tốn ví dụ phần mềm Themis: Ta dễ dàng nhận thấy cách làm này tối ưu, thời gian thực hiện chương trình ngắn Đây là cách làm lấy được 100% điểm câu này Lưu ý: Các bài tập dãy dạng này khó nên học sinh phải linh hoạt cách giải và nên sử dụng phương pháp quy hoạch động thì chương trình tối ưu 2.4 Hiệu của sáng kiến kinh nghiệm Với cách làm đã rèn luyện kỹ lập trình cho các học sinh tham gia học đội tuyển, các em cũng có thói quen tối ưu hóa thuật toán và cài đặt chương trình phù hợp, để ý đến thời gian chạy chương trình (không chỉ quan tâm đến đáp số trước đây) Qua các lần thi khảo sát chất lượng học sinh giỏi chuyên đề dãy năm học 2014 - 2015 chất lượng học sinh dần dần tiến bộ (nhận thấy thông qua điểm lần sau thường cao lần trước, mặc dù mức độ đề khó tăng dần) Họ tên Điểm lần Điểm lần Điểm lần Điểm lần Trần Ngọc Nhật 5/10 8/10 10/10 9/10 Lê Đình Miền 6/10 7/10 8/10 8/10 Bảng điểm các lần thi khảo sát chất lượng học sinh giỏi chuyên đề dãy năm học 2015 – 2016: Họ tên Điểm lần Điểm lần Điểm lần Điểm lần Đỗ Hồng Quang 6/10 8/10 8/10 9/10 Lê Xuân Trường 7/10 7/10 10/10 9/10 Năm 2014 - 2015 thức tơi đứng đợi tuyển, làm công tác bồi dưỡng học sinh giỏi tỉnh môn tin học cho nhà trường Năm học 2015 – 2016 tiếp tục dạy hỗ trợ đồng nghiệp công tác bồi dưỡng học sinh giỏi Tin Cả hai năm áp dụng phương pháp giảng dạy dày công hiệu quả mang lại khả quan Kết quả điểm thi học sinh giỏi cấp tỉnh năm 2014 - 2015 môn Tin học THPT của học sinh trường có tiến bộ rõ rệt: em tham gia thi đạt giải cả em với giải ba, giải khuyến khích (trong năm 2013 - 2014 và những năm học trước không có học sinh nào có giải) đặc biệt gần học sinh không bị điểm các bài mức độ bản đề (câu 1, 2) Năm 2015 – 2016: em tham gia thi cũng cả em với giải ba, giải khuyến khích Như rõ ràng việc giúp học sinh lựa chọn và cài đặt thuật toán tối ưu, 20 hiệu quả đem lại là rõ rệt, tránh được việc học sinh điểm vì những lí đáng tiếc kì thi học sinh giỏi THPT môn Tin học 21 KẾT LUẬN VÀ KIẾN NGHI 3.1 Kết luận Bài tập dãy nhiều và đa dạng, sáng kiến kinh nghiệm đã chia các bài tập dãy thành các dạng cụ thể (chỉ là một số dạng thường gặp) Đối với dạng đưa cách giải tối ưu, các cách giải tối ưu được trình bày chủ yếu phương pháp quy hoạch đợng, là phương pháp giải cịn khá mới mẻ với học sinh trường với kiên trì và ham học hỏi của cả giáo viên, học sinh nên hiệu quả mang lại khả quan Để chứng minh cho tối ưu của cách giải đó tơi đưa bài toán ví dụ với nhiều cách giải khác (cả cách học sinh tự suy nghĩ và cách tơi đinh hướng), tính đợ phức tạp, đo thời gian thực hiện phần mềm Themis Vì học sinh hiểu sâu sắc và giải quyết tốt một số dạng bài tập dãy có dạng tương tự Từ đó áp dụng làm các bài tập khác nhạy bén nhằm nâng cao chất lượng học sinh giỏi và mang lại kết quả cao các kì thi học sinh giỏi Tin Đề tài này có thể mở rộng thêm với nhiều dạng bài tập khác Kinh nghiệm là vốn tích lũy của bản thân tơi những năm ôn luyện đội tuyển tiếp theo Đồng thời, có thể là tài liệu tham khảo cho những giáo viên trẻ cịn thiếu kinh nghiệm bời dưỡng học sinh giỏi Do thời gian có hạn và kinh nghiệm chưa nhiều nên đề tài khơng tránh khỏi những thiếu sót, kính mong đóng góp ý kiến của các đồng nghiệp để đề tài được hoàn thiện 3.2 Kiến nghị Đối với tổ chuyên môn, cần phân dạng bài tập cho học sinh giảng dạy Ra nhiều dạng đề với cấu trúc đề Sở giáo dục Thanh Hóa quy định để đưa vào ngân hàng đề làm phong phú nguồn tài liệu bồi dưỡng học sinh giỏi của nhà trường Mong Ban giám hiệu nhà trường trì việc tổ chức các kì thi khảo sát chất lượng học sinh giỏi môn Tin để học sinh có hội thử sức với các kì thi Tôi cũng mong muốn Sở Giáo Dục và Đào tạo Thanh Hóa nên tổ chức một cuộc thi lĩnh vực Tin học cho cả giáo viên và học sinh Đây là sân chơi thú vị cho giáo viên và học sinh, tạo đợng lực, hứng thú và ham thích tìm hiểu Tin học Đồng thời thông qua cuộc thi có thể phát hiện thêm nhiều tài lĩnh vực Tin học góp phần tạo thêm nguồn nhân lực, nhân tài mới lĩnh vực công nghệ thông tin cho xã hội Trên chỉ là những kiến nghị mang tính chủ quan của tơi, cũng mong được các cấp có thẩm quyền xem xét và góp ý của các đồng nghiệp XÁC NHẬN CỦA THỦ TRƯỞNG ĐƠN VI Thanh Hóa, ngày 20 tháng năm 2016 Tôi xin cam đoan SKKN của viết, khơng chép nội dung của người khác Hoàng Thị Mai 22 MỤC LỤC MỞ ĐẦU 1.1.Lý chọn đề tài 1.2.Mục đích nghiên cứu .1 1.3.Đối tượng nghiên cứu 1.4.Phương pháp nghiên cứu .2 NỘI DUNG NGHIÊN CỨU 2.1.Cơ sở lí luận 2.2 Thực trạng .3 2.2.1 Giới thiệu khái quát trường 2.2.2 Thực trạng trước nghiên cứu 2.3 Các biện pháp đã sử dụng để giải quyết vấn đề 2.3.1 Cơ sở lý thuyết 2.3.1.1 Dãy liên tiếp .5 2.3.1.2 Dãy có thể chọn không liên tiếp .5 2.3.1.3 Độ phức tạp của thuật toán .5 2.3.2 Biện pháp lựa chọn và cài đặt chương trình tối ưu giải một số dạng 2.3.2.1 Bài tập dãy liên tiếp .6 2.3.2.1.1 Dạng 1: Các dãy không chung phần tử nào của dãy mẹ 2.3.2.1.1.1 Bài toán bản 2.3.2.1.1.2 Bài toán ví dụ 2.3.2.1.1.3 Bài toán áp dụng .11 2.3.2.1.2 Dạng 2: Các dãy có thể chung phần tử của dãy mẹ 13 2.3.2.1.2.1 Bài toán bản .13 2.3.2.1.2.2 Bài toán ví dụ 14 2.3.2.1.2.3 Bài toán áp dụng .16 2.3.2.2 Bài toán dãy có thể chọn không liên tiếp các phần tử .17 2.3.2.2.1 Bài toán bản 17 2.3.2.2.2 Bài toán ví dụ .17 2.4 Hiệu quả sáng kiến kinh nghiệm 18 KẾT LUẬN VÀ KIẾN NGHI .19 3.1 Kết luận .19 3.1 Kiến nghị .19 23 TÀI LIỆU THAM KHẢO [1] Sách giáo khoa Tin học 11, NXB Giáo dục [2] Giáo trình Giải thuật, Th.s Nguyễn Văn Linh, Đại học Cần Thơ (2003) [3] Giáo trình Cấu trúc liệu giải thuật, Trần Hạnh Nhi, Dương Anh Đức, NXB Đại học quốc gia TPHCM 24 ... trình bày sáng kiến kinh nghiệm: ? ?Giúp học sinh lựa chọn và cài đặt chương trình tối ưu giải một số dạng bài tập dãy nhằm nâng cao chất lượng học sinh giỏi môn Tin học trường THPT”... của thuật toán 2.3.2 Biện pháp lựa chọn cài đặt chương trình tới ưu giải số dạng tập về dãy Đối với dạng bài tập dãy tơi đưa mợt bài toán ví dụ, bài toán ví dụ tơi trình bày... sinh thực hiện tốt việc lựa chọn và cài đặt chương trình tối ưu giải các bài tập dãy nói riêng và các bài tập lập trình nói chung thì chất lượng học sinh giỏi được nâng cao

Ngày đăng: 17/10/2017, 09:30

Từ khóa liên quan

Mục lục

  • TÀI LIỆU THAM KHẢO

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

Tài liệu liên quan