1. Trang chủ
  2. » Thể loại khác

Chuyen de Tin Hoc An Giang 2015

65 63 0

Đ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

Cấu trúc

  • Quan điểm và các định hướng của chương trình Tin học 8 và bồi dưỡng học sinh giỏi THCS

    • Định hướng chính:

    • Quan điểm dạy học

  • Giải bài toán Tin

  • Các dạng toán bồi dưỡng môn tin cho HSG THCS.

Nội dung

TRƯỜNG ĐHSP HUẾ KHOA TIN HỌC Tài liệu bồi dưỡng giáo viên Tin học Chuyên đề: ”Nâng cao kiến thức thuật toán định hướng bồi dưỡng học sinh giỏi môn Tin học THCS” Huế, 5/2015 Module Nâng cao kiến thức thuật toán định hướng bồi dưỡng học sinh giỏi môn Tin học THCS Quan điểm định hướng chương trình Tin học bồi dưỡng học sinh giỏi THCS Định hướng chính: Chương trình sách giáo khoa (SGK) lớp có định hướng chính: • Giảng dạy lập trình thơng qua thuật tốn • Các khái niệm ngơn ngữ lập trình nói chung ngơn ngữ lập trình Turbo Pascal (TP) nói riêng • Các kỹ xây dựng thuật tốn lập trình để giải số tốn máy tính Nhóm tốn bồi dưỡng học sinh giỏi: Ở bậc trung THCS toán bồi dưỡng học sinh giỏi (HSG) thường phân loại theo thuật toán, theo cấu trúc liệu Sử dụng kiến thức toán UCLN , BCNN, số nguyên tố, chia hết số nguyên,…Các dạng tốn thường gặp là: • Nhóm tốn số học • Nhóm tốn thao tác mảng chiều • Nhóm tốn xử lý xâu • Các toán khác Quan điểm dạy học Từ định hướng trên, SGK Tin học tác giả xây dựng dựa quan điểm: • Khơng dạy ngơn ngữ lập trình cụ thể, trình bày thuật tốn khái niệm lập trình thơng qua ngơn ngữ lập trình cụ thể • Cách truyền đạt kỹ lập trình giải tốn máy tính phải thông qua việc vận dụng số khái niệm cụ thể ngơn ngữ lập trình lựa chọn • Truyền đạt cho học sinh phương pháp lập trình cấu trúc, giáo viên thường lựa chọn ngơn ngữ lập trình để giới thiệu TURBO PASCAL • Thơng qua tốn rèn luyện cho học sinh tư thuật toán Giải toán Tin Phần giới thiệu số bước thường vận dụng q trình giải tốn Tin Bước bước quan trọng hiểu rõ nội dung toán Đây yêu cầu quen thuộc người làm toán Để hiểu toán theo cách tiếp cận tin học ta phải gắng xây dựng số thí dụ phản ánh yêu cầu đề đầu thử giải thí dụ để hình thành dần hướng thuật toán Bước thứ hai dùng ngôn ngữ quen thuộc, tốt ngơn ngữ tốn học đặc tả đối tượng cần xử lí mức độ trừu tượng, lập tương quan, xây dựng hệ thức thể quan hệ đại lượng cần xử lí Bước thứ ba xác định cấu trúc liệu để biểu diễn đối tượng cần xử lí cho phù hợp với thao tác thuật toán Trong bước ta tiếp tục làm mịn dần đặc tả theo trình tự từ xuống, từ trừu tượng đến cụ thể, từ đại thể đến chi tiết Bước cuối sử dụng ngôn ngữ lập trình chọn để viết chương trình hồn chỉnh Ở bước ta tiến hành theo kĩ thuật từ lên, từ thao tác nhỏ đến thao tác tổ hợp Sau nhận chương trình ta cho chương trình chạy thử với liệu lấy từ thí dụ xây dựng bước Điều quan trọng xây dựng thủ tục cách khoa học có chủ đích nhằm kiểm tra tính tin cậy chương trình thu thực số cải tiến Chúng ta vận dụng cách tiếp cận để giải số tốn cụ thể Những phần trình bày sử dụng vài kí pháp quen thuộc tin học, thí dụ: x = abc số tự nhiên x tạo ba chữ số a, b c a, b = hai số a b nhận giá trị từ đến Sở dĩ ta khơng sử dụng kí hiệu tốn học bàn phím máy tính khơng có kí hiệu Chọn kí hiệu có sẵn ngơn ngữ lập trình giúp viết thích chương trình Bài 1.1 Số thân thiện Tìm tất số tự nhiên có hai chữ số mà đảo trật tự hai chữ số thu số nguyên tố với số cho Hiểu đầu Ta kí hiệu (a, b) ước chung lớn (ucln) hai số tự nhiên a b Hai số tự nhiên a b gọi nguyên tố (a, b) = Khi đó, chẳng hạn: a (23, 32) = 1, 23 số cần tìm Theo tính chất đối xứng, ta có 32 số cần tìm b (12, 21) = 3, 12 đồng thời 21 số cần tìm Đặc tả: Gọi hai chữ số số tự nhiên cần tìm x a b, ta có: (1) x = ab (2) a, b = (a b biến thiên khoảng 9) (3) a > x số có hai chữ số (4) (ab, ba) = Ta kí hiệu x' số đối xứng số x theo nghĩa đầu bài, ta có đặc tả sau: (5) x = 10 99 (x biến thiên từ 10 đến 99, x số có hai chữ số) (6) (x, x') = Nếu x = ab x' = ba Ta tính giá trị x' theo công thức: x' = (chữ số hàng đơn vị x) * 10 + (chữ số hàng chục x) Kí hiệu Đơn(x) tốn tử lấy chữ số hàng đơn vị số tự nhiên x kí hiệu Chục(x) tốn tử lấy chữ số hàng chục x, ta có: x' = Đơn(x)*10 + Chục(x) Tổng hợp lại ta có đặc tả: Số cần tìm x phải thoả tính chất sau:x = 10 99 (x nằm khoảng từ 10 đến 99) (7) x' = Đơn(x)*10 + Chục(x) (8) (x, x') = (ước chung lớn x x' 1) Đặc tả thể qua ngôn ngữ tựa Pascal sau: (9) for x:=10 to 99 if ucln(x, đơn(x)*10+Chục(x))=1 then Lấy(x); đó, ucln(a,b)là hàm cho ước chung lớn hai số tự nhiên a b; Lấy(x) toán tử hiển thị x lên hình ghi x vào mảng với mục đích sử dụng lại, cần Ta làm mịn đặc tả (9): ucln(a, b): Thuật toán Euclid chia liên tiếp, thay số thứ dư chia cho số thứ hai hốn vị hai số (* Tim uoc chung lon nhat cua hai so a va b Thuat toan Euclid *) function Ucln(a,b: integer): integer; Var r:integer; begin while b > begin r:= a mod b; a:= b; b:= r; end; Ucln:= a; end; Đơn(x) = (x mod 10): số dư phép chia nguyên x cho 10, thí dụ: Đơn(19) = 19 mod 10 = Chục(x) = (x div 10): thương nguyên phép chia x cho 10, thí dụ: Chục(19) = 19 div 10 = Lấy(x): write(x) nạp giá trị x vào mảng s theo thao tác sau: n := n + 1; s[n] := x; n đếm số phần tử nạp mảng s Biểu diễn liệu Ta dùng mảng s để lưu số tìm Dễ thấy s phải mảng nguyên chứa tối đa 90 phần tử số cần khảo sát nằm khoảng từ 10 đến 99 var s: array[1 90] of integer; Phương án chương trình hoạt động theo hai bước sau: n := Tim; Xem(n); Bước Tìm ghi vào mảng s số thoả điều kiện đầu bài, n số lượng số tìm Bước Hiển thị phần tử mảng s[1 n] chứa số tìm Tốn tử x' viết dạng hàm cho ta số tạo chữ số x theo trật tự ngược lại Ta đặt tên cho hàm SoDao (số đảo) Hàm nhận giá trị vào số tự nhiên có nhiều chữ số Để tạo số đảo y số x cho trước, hàm SoDao lấy dần chữ số hàng đơn vị x để ghép vào bên phải số y: y := y*10 + (x mod 10) Sau bước, chữ số hàng đơn vị lấy loại hẳn khỏi x toán tử: x := x div 10 Chỉ thị {$B-} chương trunh NTCN (nguyên tố nhau) đặt chế độ kiểm tra biểu thức lôgic vừa đủ Khi xác định giá trị chân lí cần thiết khơng tiến hành tính tiếp giá trị biểu thức Thí dụ, với lệnh x := 1; y := 5; if (x > 5) and (x + y < 7)then y := y + else y := y-1; chế độ {$B-}, sau tính giá trị chân lí (x > 5) = false, chương trình bỏ qua nhân tử logic (x + y < 7), tích lơgic false với giá trị tuỳ ý cho ta false Trong trường hợp lệnh y := y - thực Ngược lại, ta đặt thị {$B+} chương trình, sau tính (x > 5) = false tiếp tục tính giá trị (x + y < 7) lấy tích hai giá trị tìm (false and true = false) làm giá trị biểu thức điều kiện cấu trúc rẽ nhánh nói Cuối toán tử y:= y - thực giống trường hợp khối lượng tính toán lại nhiều (* -So than thien (xy,yx) = *) program SoThanThien; {$B-} uses Crt; const MN = 90; var s: array[1 MN] of integer; function Ucln(a,b: integer): integer; tự viết function SoDao(x: integer): integer; var y: integer; begin y := 0; repeat { ghep chu so hang don cua x vao ben phai y } y := 10*y + (x mod 10); x := x div 10; { loai chu so hang don } until (x = 0); SoDao := y; end; (* -Tim cac so thoa dieu kien dau bai ghi vao mang s Output: so luong cac so tim duoc *) function Tim: integer; var x,d: integer; begin d := 0; {So luong cac so can tim } for x := 10 to 99 if Ucln(x,SoDao(x)) = then begin d := d + 1; s[d]:= x; end; Tim := d; end; (* -Hien thi mang s[1 n] tren man hinh *) procedure Xem(n: integer); var i: integer; begin writeln; for i := to n write(s[i]:4); writeln; end; BEGIN n := Tim; Xem(n); writeln; write(' Tong cong ',n,' so'); readln; END Cải tiến Ta vận dụng tính đối xứng nhận xét phần để cải tiến chương trình Như cần khảo sát số x = ab, với a > b ≥ Trường hợp a = b ta khơng xét x' = x Ucln(x, x) = x ≥ 10 ≠ Nếu b = ta có x = 10a x' = a Ta thấy Ucln(10a, a)= a = a = Do ta xét riêng trường hợp Khi ab = 10 ta có (10, 1) = Vậy 10 số cần tìm số Mỗi tìm hai chữ số a b thoả điều kiện a >b Ucln(a*10+b, b*10+ a) =1 ta đưa a*10 + b vào kết quả, b > ta đưa thêm số đảo b*10 + a vào kết (* So Than thien: Phuong an -*) function Tim2: integer; var a,b,d: integer; begin d:= 1; {So luong cac so can tim} s[d] :=10; for a := to for b := to a-1 if Ucln(a*10+b,b*10+a)=1 then begin d := d + 1; s[d] := a*10 + b; d := d + 1; s[d] := b*10 + a; end; Tim2:=d; end; Bài 1.2 Số cấp cộng Tìm số tự nhiên lẻ có ba chữ số Ba chữ số này, theo trật tự từ trái qua phải tạo thành cấp số cộng Đặc tả x số tự nhiên có ba chữ số: x = 100*a + 10*b + c x số lẻ nên chữ số hàng đơn vị c phải số lẻ: c = 1, 3, 5, 7, Chữ số hàng trăm x phải khác 0: a = Nếu dãy a, b, c lập thành cấp số cộng số đứng b trung bình cộng hai số đầu cuối: b = (a + c)/2 hay 2b = a+c Từ (4) ta suy (a + c) số chẵn Do c lẻ, (a + c) chẵn nên a lẻ Nếu biết a c ta tính x = 100a +10(a + c) / + c = 100a + 5(a + c) + c = 105a + 6c Vì có chữ số lẻ 1, 3, 5, nên tổ hợp a c cho ta 25 số Tổ chức liệu Ta tạo sẵn mảng nguyên phần tử ChuSoLe[1 5] gán trước giá trị 1, 3, 5, 7, cho mảng Trong Turbo Pascal (TP) việc thực thông qua khai báo: const ChuSoLe: array[1 5] of integer = (1,3,5,7,9); Chú ý khai báo phải đặt mục const nơi khai báo Ý nghĩa dòng khai báo sau: Xin cấp phát biến mảng kiểu nguyên có phần tử với dẫn từ đến 5, tên biến ChuSoLe phần tử biến gán trước trị 1, 3, 5, Sau đó, cần, ta việc duyệt mảng ChuSoLe thu toàn chữ số lẻ theo trật tự khai báo trước Chú ý Thủ tục inc(d) chương trình TP tăng giá trị biến d lên 10 B3 Nếu kt=0 thơng báo “trong dãy khơng có số nguyên tố nào” B3 Kết thúc Chúng ta xét thêm tốn sau: Lập trình giải toán sau: Cho mảng số nguyên gồm 30 phần tử, tìm tất phần tử số ngun tố tính tổng chúng Bài tốn Nhập từ bàn phím toạ độ điểm M, N mặt phẳng Tính đưa hình độ dài đoạn MN Nếu chúng trùng thơng báo “M trùng với N” Xác định tốn: +/ Input: Bốn số x1,y1,x2,y2 +/ Output: Độ dài đoạn MN thơng báo “M trùng với N” Thuật tốn: B1 Nhập số x1, y1, x2, y2; d 0; B2 d  ( x − x1) + ( y − y1) B3 Nếu d=0 thông báo “M trùng với N”, ngược lại đưa d hình kết thúc Bài tốn 2.1 Xây dựng thuật tốn nhập từ bàn phím toạ độ đỉnh tam giác mặt phẳng Tính đưa hình chu vi, diện tích tam giác Xác định tốn: +/ Input: Các số x1, y1, x2, y2, x3, y3 51 +/ Output: Chu vi, diện tích tam giác Ta thấy việc tính chu vi tam giác toán xuất phát từ toán sở nêu tức tính độ dài cạnh biết toạ độ điểm Thuật toán: B1 Nhập số x1, y1, x2, y2, x3, y3; B2 a  ( x − x1) + ( y − y1) b  ( x3 − x1) + ( y − y1) c  ( x3 − x 2) + ( y3 − y 2) p a+b+c; s p / 2( p / − a)( p / − b)( p / − c) b3 Đưa p, s hình kết thúc Bài tốn 2.2 Xây dựng thuật tốn nhập từ bàn phím toạ độ đỉnh đa giác N đỉnh Tính đưa hình chu vi đa giác Xác định tốn: +/ Input: Các cặp số (xi, yi), với i nhận giá trị từ đến N +/ Output: Chu vi đa giác Từ kết xác định toán ta thấy toán mở rộng từ tốn sở nêu thực chất tốn tính độ dài đoạn thẳng biết toạ độ điểm Từ học sinh dễ dàng xây dựng thuật toán để giải toán Thuật toán: B1 Nhập toạ độ N đỉnh; B2 Tính độ dài các cạnh, tính chu vi; 52 B3 Đưa chu vi hình, kết thúc Ta mở rộng tốn tính chu vi đa giác N đỉnh không gian Bài tốn Xây dựng thuật tốn tìm max số a, b Nếu chúng đưa hình hai số Xác định toán: +/ Input: Hai số a, b +/ Output: Max hai số a, b Thuật toán: B1 Nhập a, b B2 Max  a; B3 Nếu Max < b Max b B4 Đưa Max hình kết thúc Từ việc tìm max số ta mở rộng tốn tìm max N số toán sau: Bài toán 3.1 Xây dựng thuật tốn tìm max N số ngun a1, a2, …, aN Xác định toán: +/ Input: Số nguyên dương N dãy số nguyên a1, a2, …, aN +/ Output: Max dãy số cho Bằng quy luật toán sở, ban đầu ta tìm max a1, a2 ta số max Sau ta lại tìm max max với a3, trình tiếp diễn tìm max max với aN Thuật tốn: 53 B1 Nhập số nguyên dương N dãy số nguyên a1, a2, …, aN B2 Max a1; i 2; B3 Nếu i>N sang B5 B4 Nếu ai>max max ai, ii+1, quay lại B3 B5 Đưa Max hình kết thúc Ngồi ra, với tốn sở học sinh dễ dàng xây dựng thuật tốn tìm số, Tìm N số Bài tốn Xây dựng thuật tốn tìm số lần xuất kí tự “ch” xâu s Xác định tốn: +/ Input: Kí tự “ch” xâu s +/ Output: Số lần xuất kí tự “ch” xâu s Thuật tốn: B1 Nhập xâu s kí tự ch; dem 0; B2 Duyệt từ đầu đến cuối xâu s, s[i]=ch tăng biến đếm lên đơn vị dem dem+1 B3 Đưa dem hình kết thúc Ta xét tốn sau: Bài tốn 4.1 Xây dựng thuật tốn tính tần số xuất kí tự xâu s Xác định toán: +/ Input: Xâu s +/ Output: Số lần xuất kí tự xâu s 54 Rõ ràng ta thấy tốn tìm số lần xuất kí tự xâu Vấn đề mở rộng có nhiều kí tự cần phải tìm số lần xuất chúng xâu s Việc nắm vững thuật toán giải toán sở nêu giúp học sinh xây dựng thuật toán để giải toán 4.1 cách xem kí tự chưa tìm số lần xuất chúng xâu s kí tự “ch” tốn sở Khi tìm số lần xuất kí tự đưa kí tự số lần xuất hình Một vấn đề nảy sinh làm để bỏ qua kí tự tìm số lần xuất xâu s Vấn đề có nhiều cách giải cách đơn giản xố hết kí tự tìm tần số xuất Khi xố hết xâu cơng việc tìm số lần xuất kí tự kết thúc Thuật tốn: B1 Nhập xâu s; B2 Trong chưa hết xâu thực hiện: Tìm số lần xuất kí tự s[1] xâu; Đưa kí tự s[1] số lần xuất hình Xố kí tự s[1] xâu B3 Kết thúc Bài toán 4.2 Xây dựng thuật tốn tìm kí tự xuất xâu Xác định toán: +/ Input: Xâu s +/ Output: Kí tự xuất xâu s Bài toán phát triển từ toán sở vấn đề tìm số lần xuất kí tự xâu Tuy nhiên nâng 55 cao mức sau đếm số lần xuất kí tự lại phải kiểm tra xem kí tự có phải xuất không? Sẽ đơn giản ta xem toán mở rộng toán 4.1 Thật vậy, ta sử dụng biến kiểu kí tự(minchar) để lưu kí tự xuất xâu ban đầu giả thiết số lần xuất kí tự xâu là(min=length(s)), minchar=s[1] Sau lần đếm số lần xuất kí tự xâu ta lại so sánh với Nếu lớm số lần xuất kí tự vừa đếm ta gán lại minchar, cuối ta giải toán Thuật toán: B1 Nhập xâu s; minchar=s[1]; min=length(s) B2 Trong chưa hết xâu thực hiện: Tìm số lần xuất kí tự s[1] xâu; So sánh số lần tìm với Nếu lớn thực hiện: - Min nhận giá trị số lần xuất kí tự vừa đếm được; - Minchar:=s[1] Xố kí tự s[1] xâu B3 Đưa minchar hình kết thúc Bài tốn 4.3 Xây dựng thuật tốn tìm kí tự xuất nhiều xâu Xác định tốn: +/ Input: Xâu s +/ Output: Kí tự xuất nhiều xâu s Ta thấy toán tương đương toán 4.2 Thuật toán giải toán sau: 56 Thuật toán B1 Nhập xâu s; maxchar=s[1]; max=0; B2 Trong chưa hết xâu thực hiện: Tìm số lần xuất kí tự s[1] xâu; So sánh số lần tìm với max Nếu max lớn thực hiện: - Max nhận giá trị số lần xuất kí tự vừa đếm được; - Maxchar:=s[1] Xố kí tự s[1] xâu B3 Đưa maxchar max hình kết thúc Bài tốn Xây dựng thuật toán tạo xâu đảo xâu cho trước Xác định toán: +/ Input: Xâu s; +/ Output: Xâu đảo xâu s Thuật toán: B1 Nhập xâu s, khởi tạo xâu x ’’; i length(s) B2 Nếu i < sang B4 B3 x  x+s[i]; i i-1, quay lại B2; B4 Đưa x hình kết thúc Bài tốn 5.1 Xây dựng thuật toán kiểm tra xem xâu cho trước có phải xâu đối xứng khơng? Xâu đối xứng xâu mà xâu đảo nó Xác định tốn: +/ Input: Xâu s; 57 +/ Output: Kết luận “xâu s có phải xâu đối xứng” “xâu s xâu đối xứng” Từ khái niệm xâu đối xứng, ta dễ dàng nhận thấy toán mở rộng từ toán cần tạo xâu đảo s so sánh với cho kết Thuật toán: B1 Nhập xâu s B2.Tạo xâu đảo s B3 So sánh s với xâu đảo s Nếu chúng thơng báo “xâu s có phải xâu đối xứng”, chúng khơng thơng báo “xâu s khơng phải xâu đối xứng” Kết thúc Bài toán 5.2 Xây dựng thuật toán kiểm tra xem xâu cho trước có phải xâu đảo xâu cho trước khác không? Xác định toán: +/ Input: Xâu s, x; +/ Output: Kết luận “xâu s, x hai xâu đảo nhau” “xâu s, x hai xâu đảo nhau” Đây toán mà việc giải dễ dàng thực tạo xâu đảo hai xâu cho Sau thuật toán Thuật toán: B1 Nhập xâu s, x B2.Tạo xâu đảo s, xâu đảo x 58 B3 So sánh s với xâu đảo x, x với xâu đảo s Nếu có cặp thơng báo “xâu s, x hai xâu đảo nhau” ,ngược lại thơng báo “xâu s, x hai xâu đảo nhau” Kết thúc Bài toán 5.3 Người ta xâu N viên đá q kích thước giống thầnh vòng đeo cổ, viên có màu số màu đánh số từ đến Để tăng tính độc đáo cho vòng trang sức quý này, người ta định lắp khố đeo vào vị trí cho mở vòng ta dây đá q có tính chất: không phụ thuộc vào việc cầm đầu dây bên tay phải đầu bên tay trái, ta chuỗi hạt giống nhau, tức viên đá thứ i từ trái sang ln có màu j khơng phụ thuộc vào cách cầm Cho sâu s gồm màu viên đá quý, xác định số vị trí đặt khố Xác định tốn: +/ Input: Xâu s +/ Output: Số vị trí đặt khố Chẳng hạn: Cho s=’222222335533’, ta có vị trí đặt khố vị trí thứ vị trí thứ vị trí thứ vị trí thứ 10 Thuật tốn: Ta thấy từ tính chất cách đặt khoá, cách đặt khoá cho ta xâu đá q có tính chất đối xứng ta cố xâu màu sắc đối xứng tương ứng Chẳng hạn: Ở vị trí đặt khố vị trí thứ thứ ta xâu đối xứng 222335533222; Ở vị trí đặt khố vị trí thứ 10 ta có xâu đối xứng 533222222335 Vậy xét chất tốn xâu đối xứng Việc đếm số vị trí đặt khoá thực cách sau: Cho i chạy từ đầu xâu đến cuối 59 xâu s( i:1 >L, với L độ dài xâu s) Với i ta kiểm tra xem xâu s1=copy(s,i,L-i+1)+copy(s,1,i-1) có phải xâu đối xứng khơng? Nếu tăng đếm lên đơn vị Cuối ta tìm số vị trí đặt khố Sau thuật tốn giải toán B1 Nhập xâu s, dem0; i1; L độ dài xâu s; B2 Nếu i> L đưa dem hình, sang B4 B3 s1’’ ( s1 gán xâu rỗng); s1copy(s,i,L-i+1)+copy(s,1,i-1) Nếu s1 xâu đối xứng demdem+1; ii+1, quay lại B2 B4 Kết thúc Bài tốn Xây dựng thuật tốn tính N! Xác định toán: +/ Input: Số nguyên dương N +/ Output: N! Thuật toán: B1 Nhập số nguyên dương N; gt1; i2; B2 Nếu i> N sang bước B3 gtgt*i, ii+1, quay lại B2 B4 Đưa gt hình kết thúc Từ tốn sở ta mở rộng tốn sau: Bài toán 6.1 Nhập vào số tự nhiên N Lập chương trình đưa hình số hốn vị N số 1,2,3, ,N (N N sang bước B3 shvshv*i, ii+1, quay lại B2 B4 Đưa shv hình kết thúc Bài tốn 6.2 Một chuỗi s1 có độ dài k gọi chuỗi thực s nếu: - Nó gồm k kí tự lập nên từ kí tự chuỗi s cách rút bỏ tất kí tự giống chuỗi khơng thêm kí tự khác - Trong s1 kí tự tuân theo trật tự có s Viết chương trình tìm số dãy thực s với k=2, biết s nhập từ bàn phím Ví dụ s=’HOI THI TIN HOC TRE TINH AN GIANG’ Sau rút hết kí tự giống khơng thêm kí tự ta có s=’CRE’ Từ ta có số dãy thực với k=2 3(CR,CE, RE) Xác định toán: +/ Input: Xâu s số k( k=2) 61 +/ Output: Số dãy thực s Thuật toán: Ta gọi L số kí tự lại xâu s sau rút kí tự giống khơng thêm kí tự Chẳng hạn ví dụ ta có L=3 Trong s1 k kí tự lấy theo thứ tự từ trái qua phải (CR, CE, RE) mà không lấy thứ tự ngược lại( RC, EC, ER) Như tốn tính tổ hợp chập k L phần tử Bài toán tính cách dễ dàng sau tính giá trị sau: L!; k!; (L-k)! Tóm lại tốn tính giai thừa mà ta đề cập Từ ta có thuật tốn giải tốn sau: B1 Nhập xâu s số k B2 Xử lí xâu s( xố kí tự giống nhau) B3 Tính L!, k!, (L-k)! B4 Tính L! k!( L − k )! B5 Đưa kết hình kết thúc Bài tốn 7: Sắp xếp tìm kiếm Bài tốn 7.1 Viết chương trình nhập vào dãy số nguyên có n phần tử a Đưa phần tử lẻ đầu danh sách, phần tử chẵn cuối danh sách in kết hình b Sắp xếp phần tử lẻ đầu danh sách theo thứ tứ tăng dần, xếp phần tử chẵn cuối danh sách theo thứ tự giảm dần In danh sách hình Thuật tốn: 62 Câu a) Dùng đồng thời biến, biến L duyệt từ đầu dãy đến cuối dãy (để xếp hần tử lẻ lên đầu), biến R duyệt từ đầu dãy đến cuối dãy (để xếp phần tử chẵn cuối), biến L gặp số chẵn biến R gặp số lẻ ta đổi chỗ giá trị A[L] A[R] cho nhau, biến L gặp số lẻ tăng L, biến R gặp số chẵn tăng R Q trình tìm xếp kết thúc L>R Câu b) Vì câu Câu a ta xếp phần tử lẻ lên đầu, phần tử chẵn cuối dãy nên câu b ta cần dùng biến K đếm xem có băo nhiêu phần tử lẻ sau ta dùng thuật tốn xếp tăng dần cho đoạn từ đến K, sau ta lại dùng thuật toán xếp giảm dần cho đoạn từ K+1 đến N Bài tốn 7.2 Viết chương trình nhập vào từ bàn phím mảng chiều A gồm M phần tử, mảng chiều B gồm N phần tử, xếp dãy A B tăng dần sau trộn dãy thành dãy C cho dãy C dãy xếp tăng dần In mảng A, B, C hình Thuật tốn: + Nhập mảng A gồm M phần tử, mảng B gồm N phần tử + Sắp xếp mảng A + Sắp xếp mảng B I:=1; j:=1; k:=1 Trộn mảng sau: Trong i

Ngày đăng: 11/12/2017, 17:54

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w