Trường THPT Thuận Thành số 1 ĐỀ THI GIÁO VIÊN GIỎI CẤP TRƯỜNG VÒNG THI LÝ THUYẾT Môn Tin học Thời gian làm bài 120 phút Câu 1(2điểm) Viết thuật toán tính tổng sau bằng cả 2 cách liệt kê và sơ đồ khối[.]
Trường THPT Thuận Thành số ĐỀ THI GIÁO VIÊN GIỎI CẤP TRƯỜNG VỊNG THI LÝ THUYẾT Mơn: Tin học Thời gian làm bài: 120 phút Câu 1(2điểm) Viết thuật tốn tính tổng sau cách liệt kê sơ đồ khối 2014 n n! e( n) Câu 2(2điểm): Theo anh (chị) nhập liệu tạo lập hồ sơ hay cập nhật hồ sơ? Tại sao? Câu 3(2điểm): Tại phải tạo nhiều bảng sau liên kết lại? Có thể đưa tất thông tin cần thiết vào bảng hay khơng? Câu 4(2điểm): Một chương trình có chứa câu lệnh While – Do, điều kiện viết sau While ln (Ví dụ While x*x>=0 Do ) Có thể khẳng định chương trình sai hay không? Tại sao? Câu 5(2điểm): Anh (chị) nêu ý tưởng giải toán theo phương pháp qui hoạch động, cho ví dụ Hết Hướng dẫn chấm Câu 1: Bước 1: E1; Ttg1.0/1; n1; Bước 2: Nếu n>2014 thơng báo E kết thúc Bước 3.1: TgTg/n; 3.2: EE+Tg; Bước nn+1, quay lại bước Sơ đồ khối lệnh tương tự Câu 2: Thao tác nhập liệu cần thiết phải thực khâu tạo lập hồ sơ cập nhật hồ sơ khâu điều cần phải đưa liệu vào hệ thống để lưu trữ nhớ ngồi Ở khâu tạo lập thơng thường người ta nhập đầy đủ thông tin hồ sơ, khâu cập nhật – nhập đầy đủ hồ sơ (bổ sung thêm hồ sơ mới) phần hồ sơ (sửa đổi hồ sơ) Câu 3: Làm rõ: Có thể tồn CSDL có bảng (ví dụ hệ thống CDS ISIS UNESCO phục vụ cho độc giả tra cứa sách tất thư việc Quốc gia giới) Tuy bên hệ thống có nhiều bảng phụ hỗ trợ Về nguyên tắc, ta tập trung hết thơng tin vào bảng nhất, bảng phải có nhiều cột để thể hết tất thuộc tính cần thiết phải ghi lại nhiều lần giá trị thơng tin nhiều thuộc tính khác nhiều ghi khác VD: để đảm bảo tính khơng dư thừa, … Người ta tạo nhiều bảng … Hãy tưởng tượng, điều xảy tổ chức quản lí thư viện bảng Câu 4: Không thể khẳng định chương trình sai Có chương trình cần lặp vơ hạn lần kết chương trình hay khỏi vịng lặp việc kiểm tra điều kiện sử dụng công cụ ngôn ngữ lập trình cung cấp (Ví dụ lệnh Break) Câu 5: Quy hoạch động - giống phương pháp chia để trị giải toán cách kết hợp giải pháp toán Điểm khác biệt thuật toán quy hoạch động giải tất toán lần sau ghi kết chúng bảng, tránh việc phải tính lại kết toán gặp lại Nguyên lý tối ưu Bellman - Quy hoạch động trình điểu khiển tối ưu với trạng thái bắt đầu Mọi trạng thái A thuộc trình tối ưu - Tư tưởng chính: Thực toán trước, sử dụng kết để giải toán lớn - Hướng tiếp cận: + Giải tốn theo cơng thức truy hồi + Giải toán trước + Dựa vào toán để giải toán lớn gặp toán cần giải - Tổng quát: + Giải toán qua N bước + Giải toán cho tổng chi phí -> N-1 từ N-1 -> N tối ưu Thuật toán quy hoạch động Bước 1: Xây dựng công thức truy hồi Giả sử: Chia toán thành N giai đoạn 1->N Xác định F(1) - sở quy nạp - Gọi (i) hàm số xác định giá trị tối ưu, tính đến giá trị thứ i -> F(n) nghiệm tốn - Đối với tốn + Tìm Min: F(N) = Min{F(i), F(j)} i = 1, N-1 j = N-1, N + Tìm Max: F(N) = Max{F(i), F(j)} i = 1, N-1 j = N-1, N Bước 2: Tìm sở quy hoạch động Để chia tốn lớn thành tốn có cách giải phải yêu cầu phải biến đổi số toán trường hợp sở quy nạp cách thêm biến phụ, sở quy hoạch động Bước 3: Lấp đầy bảng phương án, dựa vào sở quy hoạch động, công thức quy hoạch động Giải tốn Bước 4: Truy vết Tìm nghiệm tốn Ví dụ Bài tốn: Dãy khơng giảm dài Phân tích: - Gọi L độ dài lớn dãy không giảm từ x[i] -> x[n] -> L[1] nghiệm toán - Để đưa trường hợp cách giải, ta thêm phần tử + a[0] = -œ + a[n+1] = +œ Thuật toán: Bước 1: Xây dựng công thức truy hồi - Xét phần tử thứ i: + L[i] = a[i] > > a[n] + L[i] = L[jmin] + với jmin = min{j | a[i] < a[j]} - Tổng quát: + L[i] = max {L[j] với j = i+1, n a[i] < a[j]} Bước 2: Cơ sở quy hoạch động L[n+1] = Bước 3: Tính bảng phương án void QHD() { int i, j; int jmax, temp; a[0] = -32766; a[n+1] = 32767; L[n+1] = 1; for(i=n;i>=0; i ) { jmax = n+1; temp = L[n+1]; for(j=i+1; j temp) { temp = L[j]; jmax = j; } L[i] = L[jmax]+1; T[i] = jmax; } } Bước 4: Truy vết - Theo vết sử dụng mảng T[i] mà ta đánh dấu - Bắt đầu từ T[0] ta lưu lại T[i] T[i] = n+1