WorksheetsPTTT 1
Total questions: 99
Worksheet time: 53mins
Giải bài toán trên máy tính là
thực hiện một dãy hữu hạn những thao tác để tìm được dữ liệu ra
thực hiện một dãy hữu hạn những thao tác có cơ sở khoa học thích hợp để tìm được dữ liệu ra
xuất phát từ dữ liệu vào, thực hiện một dãy hữu hạn những thao tác có cơ sở khoa học thích hợp để tìm được dữ liệu ra
xuất phát từ dữ liệu vào, thực hiện một dãy hữu hạn những thao tác có cơ sở khoa học thích hợp để tìm được dữ liệu ra theo yêu cầu của bài toán
Thuật toán là
một dãy hữu hạn các bước, mô tả chính xác các phép toán hoặc hành động để giải quyết một vấn đề
một dãy hữu hạn các bước, mô tả chính xác các phép toán hoặc hành động cần thực hiện để giải quyết một vấn đề
một dãy các bước, mỗi bước mô tả chính xác các phép toán hoặc hành động cần thực hiện để giải quyết một vấn đề
một dãy hữu hạn các bước, mỗi bước mô tả chính xác các phép toán hoặc hành động cần thực hiện để giải quyết một vấn đề
Tính hiệu quả của thuật toán được đánh giá dựa trên các tiêu chuẩn:
Dung lượng bộ nhớ cần có và thời gian cần thiết để chạy chương trình
Dung lượng bộ nhớ cần có
Thời gian cần thiết để chạy chương trình
Dung lượng bộ nhớ của máy tính và thời gian chạy chương trình
Giải thuật là
cách giải quyết bài toán cho kết quả gần đúng (chấp nhận được) đỡ phức tạp và có hiệu quả hơn
cách giải quyết bài toán cho kết quả đúng
cách giải quyết bài toán đảm bảo các đặc trưng của thuật toán
cách giải quyết bài toán cho kết quả có hiệu quả hơn
Trong biểu diễn một bài toán trên máy tính, Output là:
Các dữ liệu vào của bài toán
Các dữ liệu ra của bài toán
Các dữ liệu ra thỏa mãn yêu cầu của bài toán
Dữ liệu của quá trình tính toán bài toán
Với bài toán: Xác định giá trị lớn nhất trong dãy có n số nguyên X={x₁, x₂, ..., xₙ}, n là số nguyên dương. Hãy xác định kích thước của bài toán theo quan niệm thực nhất:
n
n+1
n2
nlogn
Xác định Input của bài toán: Hoán đổi giá trị của 2 biến số nguyên x và y và dùng biến trung gian số nguyên z
Ba biến số nguyên x, y, z
Hai biến số nguyên x, y
Hai biến số nguyên x, z
Hai biến số nguyên y, z
Phương pháp giả mã dùng để biểu diễn thuật toán là
mượn một ngôn ngữ lập trình nào đó để viết chương trình
dùng cấu trúc của một ngôn ngữ lập trình bậc cao để viết chương trình
dùng cấu trúc của ngôn ngữ lập trình bậc thấp để mô tả thuật toán
mượn các cú pháp của một ngôn ngữ lập trình nào đó để thể hiện thuật toán
Khi biểu diễn thuật toán bằng lưu đồ khối (sơ đồ khối), hình chữ nhật có ý nghĩa gì?
Thực hiện thao tác kiểm tra dữ liệu theo điều kiện để phân nhánh thuật toán
Thực hiện thao tác ghi và nhập dữ liệu
Thực hiện thao tác nhập và xuất dữ liệu
Thực hiện thao tác xử lý dữ liệu (gán, các phép tính cơ bản)
Cho dãy số nguyên có n phần tử x₁, x₂, ..., xₙ và số nguyên k. Nếu thuật toán tìm thấy và đưa ra chỉ số thứ i đầu tiên thỏa mãn thì với điều kiện nào thuật toán sẽ dừng:
i >= n
i < n
xᵢ = k
xᵢ <> k
Thuật toán được biểu diễn bằng lưu đồ khối sau, thực hiện:
Đếm các phần tử chẵn của dãy số có n phần tử x₁, x₂,..., xₙ
Tính tổng các phần tử chẵn của dãy số có n phần tử x₁, x₂,..., xₙ
Tìm kiếm các phần tử chẵn của dãy số có n phần tử x₁, x₂,..., xₙ
Sắp xếp các phần tử chẵn của dãy số có n phần tử x₁, x₂,..., xₙ
Câu 14: Thuật toán được biểu diễn bằng lưu đồ khối sau thực hiện chức năng nào?
Tính tổng các số từ 1 đến n
Tìm số lớn nhất trong dãy số
Kiểm tra số nguyên tố
Sắp xếp dãy số tăng dần
Thuật toán được biểu diễn bằng lưu đồ khối sau, thực hiện:
Đếm các phần tử chẵn của dãy số có n phần tử x₁, x₂, ..., xₙ
Tính tổng các phần tử chẵn của dãy số có n phần tử x₁, x₂, ..., xₙ
Tìm kiếm các phần tử chẵn của dãy số có n phần tử x₁, x₂, ..., xₙ
Sắp xếp các phần tử chẵn của dãy số có n phần tử x₁, x₂, ..., xₙ
Tìm giá trị lớn nhất của 2 số a, b; Tìm Ước số chung lớn nhất của 2 số a, b; Tìm bội số chung lớn nhất của 2 số a, b; Hoán đổi 2 số a, b
Tìm giá trị lớn nhất của 2 số a, b
Tìm Ước số chung lớn nhất của 2 số a, b
Tìm bội số chung lớn nhất của 2 số a, b
Hoán đổi 2 số a, b
Độ phức tạp dữ liệu vào của bài toán theo quan niệm thứ nhất là
số lượng dữ liệu vào của bài toán
số lượng dữ liệu được xử lý của bài toán
số lượng dữ liệu trung gian của bài toán
số lượng dữ liệu đã được sử dụng vào của bài toán
Thời gian trên máy Turing là:
Thời gian cần thiết để thực hiện một dãy các bước chuyển hình trạng
Thời gian cần thiết để thực hiện một bước chuyển hình trạng
Thời gian cần thiết để thực hiện bước chuyển hình trạng đầu
Thời gian cần thiết để thực hiện bước chuyển hình trạng cuối
Với máy xử lý thuật toán bằng ngôn ngữ tựa ALGOL, đơn vị nhớ là:
Một chỗ nhớ để chứa một kí hiệu
Một chỗ nhớ để chứa một dữ liệu
Một chỗ nhớ để chứa một dữ liệu vào
Một chỗ nhớ để chứa một dữ liệu ra
Xác định Output của bài toán: Kiểm tra tính nguyên tố của số nguyên dương n
n là hợp số
n không là số nguyên tố
n là số nguyên tố
n là số nguyên tố hoặc n không là số nguyên tố
Biểu diễn thuật toán theo ngôn ngữ tự nhiên là
sử dụng ngôn ngữ chữ viết thường ngày
sử dụng ngôn ngữ chữ viết thường ngày để liệt kê các bước của thuật toán
sử dụng ngôn ngữ thường ngày để lập chương trình
sử dụng ngôn ngữ chữ viết để vẽ thuật toán
Với bài toán: Xác định giá trị lớn nhất trong dãy n số nguyên X={x₁, x₂, ..., xₙ}, n là số nguyên dương. Hãy chọn biểu diễn Input, Output đúng:
Input: Dãy số nguyên X={x₁, x₂, ..., xₙ}, n nguyên dương. Output: Tìm giá trị lớn nhất Max của dãy X
Input: Dãy số nguyên X={x₁, x₂, ..., xₙ} Output: Tìm số giá trị lớn nhất
Input: Dãy số nguyên X={x₁, x₂, ..., xₙ}, n Output: Tìm giá trị lớn nhất
Input: Dãy số nguyên X={x₁, x₂, ..., xₙ} Output: Tìm giá trị lớn nhất Max của X
Cho dãy số nguyên có n phần tử: x₁, x₂, ..., xₙ. Nếu thuật toán tìm thấy và đưa ra chỉ số thứ i đầu tiên thỏa mãn xᵢ là số chẵn thì với điều kiện nào thuật toán sẽ dừng:
A. i >= n
B. i < n
C. xᵢ là số chẵn
D. xᵢ là số lẻ
Thuật toán được biểu diễn bằng lưu đồ khối sau, thực hiện:
Tìm giá trị lớn nhất của 2 số a, b
Tìm Ước số chung lớn nhất của 2 số a, b
Tìm bội số chung lớn nhất của 2 số a, b
Giải phương trình bậc nhất
Trong biểu diễn một bài toán trên máy tính, Input là
Một dữ liệu vào của bài toán
Các dữ liệu vào của bài toán
Dữ liệu trung gian của bài toán
Dữ liệu trong tính toán của bài toán
Tính hữu hạn của thuật toán là
thuật toán bao giờ cũng phải dừng lại sau một số hữu hạn bước
thuật toán sẽ dừng lại sau một số bước thực hiện
thuật toán sẽ dừng lại sau một số lần lặp các bước
thuật toán bao giờ cũng phải dừng lại sau một số vô hạn bước thực hiện
Với máy xử lý thuật toán bằng ngôn ngữ tựa ALGOL, giá bộ nhớ là:
Số chỗ nhớ để chứa dữ liệu vào và dữ liệu ra
Số chỗ nhớ để chứa dữ liệu ra và các dữ liệu trung gian
Số chỗ nhớ để chứa dữ liệu vào, dữ liệu ra và các dữ liệu trung gian
Số chỗ nhớ để chứa dữ liệu được xử lý
Thuật toán được biểu diễn bằng lưu đồ khối sau thực hiện chức năng nào?
Tính tổng các phần tử của dãy số có n phần tử x1, x2, …, xn
Đếm các phần tử của dãy số có n phần tử x1, x2, …, xn
Tìm kiếm các phần tử của dãy số có n phần tử x1, x2, …, xn
Sắp xếp các phần tử của dãy số có n phần tử x1, x2, …, xn
Lưu đồ khối dùng để biểu diễn thuật toán là
một hệ thống các nút (nút giới hạn, nút thao tác, nút điều kiện) có hình dạng khác nhau theo qui ước, thể hiện các chức năng khác nhau và được nối với nhau bởi các cung (mũi tên)
một hệ thống các nút (nút giới hạn, nút điều kiện, mũi tên) có hình dạng khác nhau theo qui ước, thể hiện các chức năng khác nhau
một hệ thống các nút (nút giới hạn, nút thao tác, mũi tên) được nối với nhau bởi các cung (mũi tên)
một hệ thống các nút (nút giới hạn, nút thao tác, nút điều kiện, mũi tên) thể hiện các chức năng khác nhau và không được nối với nhau
Xác định Input, Output cho bài toán tìm kiếm tuần tự giá trị k trong dãy n số nguyên khác nhau x₁, x₂, ..., xₙ
Input: số nguyên dương n, dãy n số nguyên khác nhau x₁, x₂, ..., xₙ, số nguyên k Output: Vị trí i mà xᵢ = k hoặc thông báo không tìm thấy số nguyên k trong dãy
Input: dãy n số nguyên khác nhau x₁, x₂, ..., xₙ, số nguyên k Output: Vị trí i mà xᵢ = k hoặc thông báo không tìm thấy số nguyên k trong dãy
Input: dãy n số nguyên khác nhau x₁, x₂, ..., xₙ, số nguyên k Output: Vị trí i mà xᵢ = k
Input: số nguyên dương n, dãy n số nguyên khác nhau x₁, x₂, ..., xₙ Output: Vị trí i mà xᵢ = k hoặc thông báo không tìm thấy số nguyên k trong dãy
Giá về thời gian trên máy Turing là:
Thời gian để thực hiện bước chuyển hình trạng đầu
Thời gian để thực hiện bước chuyển hình trạng cuối
Thời gian để thực hiện các bước chuyển hình trạng từ hình trạng đầu đến hình trạng cuối
Thời gian để thực hiện các bước chuyển hình trạng trung gian
Trong lưu đồ khối biểu diễn thuật toán: ( chọn 2 đáp án)
Không có ký hiệu điều kiện
Hình tròn biểu diễn thao tác kết thúc của thuật toán
Hình bình hành dùng để biểu diễn thao tác nhập/xuất
Mũi tên biểu diễn hướng thực hiện của thuật toán
Trong lưu đồ khối biểu diễn thuật toán tìm giá trị lớn nhất trong dãy n số nguyên (n nguyên dương), cần:
(Chọn 2 phương án đùng)
Gán giá trị ban đầu cho biến tìm max
Lưu đồ khối không dùng được cho thuật toán này
So sánh từng phần tử trong dãy với max
Gán max = 0 là cách làm đúng cho mọi trường hợp
Những điểm cần chú ý khi biểu diễn thuật toán bằng ngôn ngữ tự nhiên là:
(Chọn 2 phương án đúng)
Không cần viết rõ kết quả đầu ra
Dùng từ thông dụng, dễ hiểu
Trình bày theo trình tự logic của quá trình xử lý
Nên dùng thuật ngữ lập trình chuyên nghiệp
Khi biểu diễn thuật toán giải phương trình bậc nhất ax + b = 0 (a, b là số thực) bằng sơ đồ khối, các bước nào là phù hợp?
(Chọn 2 phương án đúng)
Gán giá trị cho x sau khi kiểm tra điều kiện
Tính nghiệm x = b/a mà không kiểm tra điều kiện
Dùng hình thoi để kiểm tra điều kiện a = 0
Sử dụng hình tròn/elip để biểu thị vòng lặp
Trong lưu đồ khối biểu diễn thuật toán tìm USCLN của 2 số nguyên a, b bằng phương pháp Euclid, cần:
(Chọn 2 phương án đúng)
Dừng khi phần dư bằng 0
Sử dụng phép chia có dư
Chỉ xét số nguyên dương < 5
Luôn dùng vòng lặp for
Biểu diễn thuật toán bằng ngôn ngữ tự nhiên có thể áp dụng tốt khi:
(Chọn 2 phương án đúng)
Viết phần mềm lớn
Giao tiếp với người chưa học lập trình
Giới thiệu khái niệm thuật toán
Sử dụng cấu trúc vòng lặp phức tạp
Với thuật toán tỉnh tổng của các số chẵn trong dãy n số nguyên (n nguyên dương), cần:
(Chọn 2 phương án đúng)
A. Kiểm tra tính chất chia hết cho 2 của từng phần tử trong dãy
B. Lặp lại qua từng phần tử
C. Tăng tổng khi gặp số lẻ
D. Khởi tạo tổng bằng -1
Đoạn chương trình viết bằng giả mã sau thực hiện công việc gì?
Chọn 2 đáp án đúng
scanf(&a,&b);
While(b!=0) {
r = a % b;
a = b;
b = r;
}
us = a;
Đoạn chương trình viết bằng giả mã sau thực hiện công việc gì?
Chọn 2 đáp án đúng
Tính tổng hai số nguyên a và b
Áp dụng thuật toán Euclid để tính USCLN
Tìm bội chung nhỏ nhất (BCNN) của a và b
Tính ước số chung lớn nhất (USCLN) của hai số nguyên a và b
Xác định tính đúng sai của các mệnh đề dưới đây về biểu diễn thuật toán bằng sơ đồ khối và giả mã:
1. Sơ đồ khối giúp giảm mã lỗi khi lập trình
Đúng
Sai
Xác định tính đúng/sai của các mệnh đề dưới đây về các phương pháp biểu diễn thuật toán bằng giả mã
2. Biểu diễn thuật toán bằng giả mã dùng cú pháp của C hoặc Pascal
Đúng
Sai
Xác định tính đúng/sai của các mệnh đề dưới đây về các phương pháp biểu diễn thuật toán bằng giả mã.
3 . Biểu diễn thuật toán bằng giả mã có thể viết bằng bất kỳ cú pháp nào không cần theo quy tắc
Đúng
Sai
Xác định tính đúng/sai của các mệnh đề dưới đây về các phương pháp biểu diễn thuật toán bằng giả mã
4 . Sơ đồ khối không áp dụng được cho thuật toán đệ quy
Đúng
Sai
Xác định tính đúng/sai của các mệnh đề dưới đây về các phương pháp biểu diễn thuật toán bằng giả mã
1. Mọi biểu diễn thuật toán bằng giả mã đều có thể dịch sang một ngôn ngữ lập trình
Đúng
Sai
Xác định tính đúng/sai của các mệnh đề dưới đây về các phương pháp biểu diễn thuật toán bằng giả mã
2. Trong biểu diễn thuật toán bằng giả mã, cấu trúc lặp được dùng là "for"
Đúng
Sai
Xác định tính đúng/sai của các mệnh đề dưới đây về các phương pháp biểu diễn thuật toán bằng giả mã
3 . Việc dùng giả mã để biểu diễn thuật toán làm khó khăn cho người học lập trình
Đúng
Sai
Xác định tính đúng/sai của các mệnh đề dưới đây về các phương pháp biểu diễn thuật toán bằng giả mã
4 . Biểu diễn thuật toán bằng giả mã không hỗ trợ điều kiện rẽ nhánh
Đúng
Sai
Xác định tính đúng sai của các mệnh đề dưới đây liên quan đến sơ đồ khối
1 . Trong sơ đồ khối, hình tròn/elip dùng để biểu diễn thao tác kiểm tra điều kiện
Đúng
Sai
Xác định tính đúng sai của các mệnh đề dưới đây liên quan đến sơ đồ khối
2 .Trong sơ đồ khối, các thao tác xử lý đều dùng hình chữ nhật
Đúng
Sai
Xác định tính đúng sai của các mệnh đề dưới đây liên quan đến sơ đồ khối
3 . Trong sơ đồ khối có thể có nhiều điểm bắt đầu
Đúng
Sai
Xác định tính đúng/sai của các mệnh đề dưới đây về sơ đồ khối:
4 .Sơ đồ khối giúp trực quan hóa thuật toán
Đúng
Sai
Xác định tính đúng/sai của các mệnh đề dưới đây về sơ đồ khối và ngôn ngữ tự nhiên trong biểu diễn thuật toán
1 . Khối hình chữ nhật trong sơ đồ khối biểu diễn thao tác xử lý
Đúng
Sai
Xác định tính đúng/sai của các mệnh đề dưới đây về sơ đồ khối và ngôn ngữ tự nhiên trong biểu diễn thuật toán 2) Trong sơ đồ khối, không cần có điểm bắt đầu kết thúc
Đúng
Sai
Xác định tính đúng/sai của các mệnh đề dưới đây về sơ đồ khối và ngôn ngữ tự nhiên trong biểu diễn thuật toán
3) Ngôn ngữ tự nhiên là cách biểu diễn tối ưu nhất
Đúng
Sai
Xác định tính đúng/sai của các mệnh đề dưới đây về sơ đồ khối và ngôn ngữ tự nhiên trong biểu diễn thuật toán
4)Sơ đồ khối giúp lập trình viên dễ gỡ rối hơn
Đúng
Sai
Khi thực hiện một thuật toán, người ta thường quan tâm tới
chi phí về hệ điều hành và ngôn ngữ lập trình
chi phí về cấu trúc dữ liệu
chi phí thời gian
chi phí thời gian và chi phí không gian (bộ nhớ)
Chi phí thời gian của một quá trình tính toán là
thời gian cần thiết để thiết kế thuật toán
thời gian cần thiết để xây dựng thuật toán
thời gian cần thiết để thực hiện một quá trình tính toán
thời gian cần thiết để kiểm tra quá trình tính toán
Chi phí không gian của một quá trình tính toán là
số ô nhớ cần để chứa một dữ liệu
số ô nhớ cần để chứa dữ liệu vào và ra
số ô nhớ cần để kiểm tra một quá trình tính toán
số ô nhớ cần để thực hiện một quá trình tính toán
Giá về bộ nhớ trên máy Turing là
Số đơn vị nhớ để ghi dữ liệu vào, dữ liệu ra
Số đơn vị nhớ để ghi dữ liệu vào và kết quả trung gian
Số đơn vị nhớ để ghi dữ liệu vào, dữ liệu ra và kết quả trung gian
Số đơn vị nhớ để ghi kết quả trung gian
Với máy xử lý thuật toán bằng ngôn ngữ tựa ALGOL, giá về thời gian là:
Số phép tính số học
Số phép tính quan hệ
Số phép tính logic
Số phép tính căn bản
Khi nói thời gian thực hiện của một chương trình là T(n) = Cn (C là hằng số) thì có nghĩa là
chương trình đó cần Cn dữ liệu vào
chương trình đó cần Cn dữ liệu ra
chương trình đó cần Cn dữ liệu tính toán
chương trình đó cần Cn chỉ thị thực thi
Giả sử T(n) là thời gian thực hiện thuật toán P nếu T(n) có bậc là g(n) thì
độ phức tạp dữ liệu vào của thuật toán P là g(n) hay O(g(n))
độ phức tạp dữ liệu ra của thuật toán P là g(n) hay O(g(n))
độ phức tạp của thuật toán P là g(n) hay O(g(n))
độ phức tạp không gian của thuật toán P là g(n) hay O(g(n))
Cách đánh giá thời gian thực hiện thuật toán độc lập với máy tính và các yếu tố liên quan tới máy tính sẽ dẫn tới khái niệm gọi là
độ phức tạp của dữ liệu vào thuật toán
độ phức tạp dữ liệu ra của thuật toán
độ phức tạp tính toán của thuật toán
độ phức tạp không gian của thuật toán
Gọi A là một thuật toán tương ứng với một mô hình tính toán, e là bộ dữ liệu vào đã được mã hóa theo cách nào đó. Khi đó thuật toán A tính trên bộ dữ liệu e cần phải trả một giá nhất định bao gồm
Giá thời gian lớn nhất tA(e)
Giá bộ nhớ lớn nhất lA(e)
Giá trung bình về thời gian tA(e) và bộ nhớ lA(e)
Giá thời gian tA(e) và giá bộ nhớ lA(e)
Nếu gọi n là kích thước dữ liệu vào của thuật toán T, thì thời gian thực hiện của thuật toán T có thể biểu diễn một cách tương đối như một hàm của n là
A. T(n)
B. O(n)
C. logn
D. nlogn
Nếu T1(n) và T2(n) là thời gian thực hiện 2 chương trình P1, P2 và T1(n)=O(f(n)), T2(n)=O(g(n)). Thời gian thực hiện của 2 chương trình nối tiếp nhau là
O(f(n) + g(n))T(n)=O(f(n)*g(n))
T(n)=O(f(n))*O(g(n))
T(n)=O(max(f(n),g(n))
T(n)=max(f(n),g(n))
Nếu T1(n) và T2(n) là thời gian thực hiện 2 đoạn chương trình P1, P2 và T1(n)=O(f(n)), T2(n)=O(g(n)). Thời gian thực hiện 2 đoạn chương trình lồng nhau:
T(n)=f(n)*g(n)
T(n)=O(f(n))*g(n))
T(n)=O(max(f(n),g(n)))
T(n)=max(f(n),g(n))
Nếu độ phức tạp của lệnh 1 và lệnh 2 đều là O(1) thì độ phức tạp của đoạn chương trình sau: for (i=1 ; i<=n ; i++) {Lệnh 1} for (j=1 ; j<=m ; j++) {Lệnh 2} được xác định bằng:
O(n)
O(m)
O(n*m)
O(max(n,m))
Nếu độ phức tạp của lệnh là O(1) thì độ phức tạp của đoạn chương trình sau:
for (i=1 ; i<=n ; i++) {
for (j=1 ; j<=m ; j++) {lệnh}
for (k=1 ; k<= h ; k++) {lệnh}
}
được xác định bằng:
O(n*m*h)
O(n+m*h)
O(n*(m+h))
O(n*max(m,h))
Nếu độ phức tạp của lệnh là O(1) thì độ phức tạp của đoạn chương trình sau:
for (i=1; i<=n; i++) {lệnh}
được xác định bằng
O(1)
O(n)
O(logn)
.O(nlogn)
Nếu độ phức tạp của lệnh là O(1) thì độ phức tạp của đoạn chương trình sau:
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
{lệnh}
được xác định bằng
O(1)
O(n)
O(n²)
O(nlogn)
Nếu T(n) là thời gian thực hiện đoạn chương trình P và T(n)=O(C*f(n)) với C là hằng số, thì
T(n)=O(f(n))
T(n)=O(logf(n))
T(n)=O(nlog(f(n)))
T(n)=O(C*f(n))
Khi xác định độ phức tạp của đoạn chương trình:
for (i=1 ; i<=n ; i++)
for (j=1 ; j<=n ; j++)
{lệnh}
Ta sử dụng quy tắc nào?
Quy tắc bỏ hằng số
Quy tắc nhân
Quy tắc cộng
Quy tắc lấy max
chọn đáp án
1. Tính thời gian thực hiện của C1 và C2
2. Tính thời gian thực hiện của B
3. Tính thời gian thực hiện của A
1. Tính thời gian thực hiện của B, C1 và C2
2. Tính thời gian thực hiện của C
3. Tính thời gian thực hiện của A
1. Tính thời gian thực hiện của B
2. Tính thời gian thực hiện của C1, C2
3. Tính thời gian thực hiện của A
1. Tính thời gian thực hiện của B, C1
2. Tính thời gian thực hiện của C2
3. Tính thời gian thực hiện của A
đáp án
1. Tính thời gian thực hiện của B, C3
2. Tính thời gian thực hiện của C, C1, C2
3. Tính thời gian thực hiện của A
1. Tính thời gian thực hiện của B, C1, C2
2. Tính thời gian thực hiện của C, C3
3. Tính thời gian thực hiện của A
1. Tính thời gian thực hiện của B, C1, C2, C3
2. Tính thời gian thực hiện của C
3. Tính thời gian thực hiện của A
1. Tính thời gian thực hiện của C1, C2
2. Tính thời gian thực hiện của C
3. Tính thời gian thực hiện của A
Hàm f(n) được gọi là O(g(n)) hay có cấp là g(n) nếu tồn tại một hằng số c > 0 và một giá trị n0 sao cho
f(n) ≥ c.g(n) với ∀n ≥ n₀
f(n) ≤ c.g(n) với ∀n ≤ n₀
f(n) < c.g(n) với ∀n ≥ n₀
f(n) ≤ c.g(n) với ∀n ≥ n₀
Xác định độ phức tạp cho đoạn chương trình sau:
int s=0;
for (int i=1; i<=n; ++i)
for (int j=1; j≤i; ++j)
s=s+1;
printf("%d \n", s);
O(n)
O(n²)
O(logn)
O(nlogn)
Xác định độ phức tạp cho đoạn chương trình sau:
if (m<n) p = m; else p = n;
for (i=0; i<=p; i++)
c[i]=a[i] + b[i];
if (p<m)
for (i=p+1; i<=m; i++) c[i] = a[i];
else
for (i=p+1; i<=n; i++) c[i] = b[i];
while (p>0 && c[p] = 0) p = p-1;
O(m*n)
O(max(m,n))
O(m+n)
O(logmn)
Xác định độ phức tạp cho đoạn chương trình sau:
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) {
for (int k = j; k < n; k++) {
printf("%d %d %d\n", i, j, k); } } }
O(n)
O(n²)
O(n³)
O(n logn)
Xác định độ phức tạp cho đoạn chương trình sau:
s = 1; p = 1;
for (i=1; i<=n; i++) {
p = p * x / i;
s = s + p;
}
O(n)
O(n²)
O(logn)
O(nlogn)
Xác định độ phức tạp cho đoạn chương trình sau:
p = m+n;
for (i=0; i<=p; i++) c[i] = 0;
for (i=0; i<=m; i++)
for (j=0; j<=n; j++)
c[i+j] = c[i+j] + a[i] * b[j];
O(m*n)
O(max(m,n))
O(m+n)
O(logmn)
Xác định độ phức tạp cho đoạn chương trình sau:
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < logn; k++) {
printf("%d %d %d\n", i, j, k); } } }
O(n log n)
O(n² log n)
O(logn)
O(n³)
Xác định độ phức tạp cho đoạn chương trình sau:
int i = 0;
while (i < n) {
int j = i;
while (j < n) {
printf("%d %d\n", i, j);
j += 2; }
i++;
}
O(n)
O(n²)
O(n³)
O(n log n)
Xác định độ phức tạp cho đoạn chương trình sau:
for (int i = 0; i < n; i++) {
for (int j = 0; j < n / 2; j++) {
for (int k = 0; k < 10; k++) {
printf("%d %d %d\n", i, j, k); } } }
O(n)
O(n²)
O(n² *10)
O(n log n)
Xác định độ phức tạp cho đoạn chương trình sau:
int x = 0, y = 0;
for (int i = 0; i < n; i++) { x=x+10;}
for (int j = 0; j < m; j++) { y=y+100;}
printf("%d %d \n", x,y);
O(max(n,m)
O(lognm)
O(nlogm)
O(n*m)
Xác định độ phức tạp cho đoạn chương trình sau:
void BS(int a[], int n) {
for(int i=0; i < n - 1 ;i++)
for(int j=n-1; j<i; j-) {
if (a[j] < a[j - 1])
int tg = a[j];a[j] = a[j-1];a[j-1] = tg;
}}}
for(int i=0; i<n; i++){ printf("%d \t",a[i]);}
O(n²)
O(n² logn)
O(n logn)
O(n)
Cho đoạn chương trình có một vòng lặp duy nhất chạy từ 1 đến n, trong thân vòng lặp có thao tác O(1). Phát biểu nào sau đây là đúng:
(Chọn 2 phương án đúng)
Tổng số thao tác thực hiện là O(n
Độ phức tạp là O(n²)
Độ phức tạp là O(1)
Độ phức tạp thời gian là O(n)
Cho đoạn chương trình sau (giả sử thao tác trong thân vòng lặp là O(1)):
…
scan(&n);
for(int i = 0; i < n; i++)
for(int j = 0; j<n; j++)
<thao tác trong thân vòng lặp>
Phát biểu nào dưới đây đúng:
(Chọn 2 phương án đúng)
Tổng số thao tác là O(n²)
Độ phức tạp thời gian là O(n²)
Độ phức tạp thời gian là O(n)
Tổng số thao tác là O(n)
Cho đoạn mã chương trình sau:
…
scan(&n);
while (n > 1) {
n = n - 2;
}
Với đầu vào n là số chẵn, phát biểu nào sau đây đúng:
(Chọn 2 phương án đúng)
Vòng lặp kết thúc khi n = 2
Độ phức tạp là O(n)
Vòng lặp không thực hiện nếu n < 1
Số lần lặp là n / 2
Khi sử dụng quy tắc tổng quát để phân tích độ phức tạp chương trình, nếu phần thân của vòng lặp có độ phức tạp O(n) và số lần lặp là n, thì độ phức tạp toàn vòng lặp là:
(Chọn 2 phương án đúng)
n x O(n)
O(n + n)
O(n²)
O(n)
Trong một đoạn chương trình có vòng lặp lồng nhau
for (k = 1; k <= n; k = k + 2)
for ( j = 1; j <= n ;j++)
Nếu mỗi thao tác trong thân vòng lặp có độ phức tạp O(1) thì tổng số lần thao tác O(1) được thực hiện trong đoạn chương trình là:
(Chọn 2 phương án đúng)
O(n²)
n*n/2
n²
n
Trong một đoạn chương trình có vòng lặp lồng nhau
for (k = 1; k <= n; k = k + 2)
for ( j = 1; j <= n ;j++)
nếu mỗi thao tác trong thân vòng lặp có độ phức tạp O(n) thì tổng độ phức tạp của đoạn chương trình sẽ là:
(Chọn 2 phương án đúng)
O(nlogn)
O(n*n*n)
O(n³)
O(n²)
Khi đánh giá độ phức tạp của một chương trình chính có gọi các chương trình con (không đệ quy), ta thực hiện theo thứ tự nào dưới đây?
(Chọn 2 phương án đúng)
Phân tích độ phức tạp của từng chương trình con
Xác định số lần chương trình chính gọi mỗi chương trình con
Ưu tiên phân tích chương trình chính rồi bỏ qua chương trình con
Bỏ qua phần thân chương trình con vì không ảnh hưởng đến độ phức tạp
Cho thuật toán có một vòng lặp for chạy từ 1 đến n, trong thân vòng mỗi thao tác có độ phức tạp O(log n). Phát biểu nào sau đây là đúng:
(Chọn 2 phương án đúng)
Thuật toán có thể được tối ưu xuống O(n)
Độ phức tạp thời gian là O(log n)
Vòng lặp thực hiện n lần, mỗi lần xử lý O(log n)
Tổng độ phức tạp thời gian là O(n log n)
Giả sử chương trình có hai vòng lặp lòng nhau, mỗi vòng lặp chạy từ 1 đến n. Trong thân của vòng lặp, môi thao tác có độ phức tạp O(1). Phát biểu nào sau đây là đúng:
(Chọn 2 phương án đúng)
Độ phức tạp là O(1)
Độ phức tạp theo thời gian là O(n²)
Độ phức tạp theo thời gian là O(n)
Tổng số thao tác trong chương trình là O(n²)
Trong đánh giá độ phức tạp của thuật toán, quy tắc nhân thường áp dụng cho:
(Chọn 2 phương án đúng)
Các thao tác chạy đồng thời (song song)
Các thao tác thực hiện nói tiếp
Vòng lặp lồng nhau
Hàm gọi nhiều hàm con với chi phí tương tự
Độ phức tạp thời gian của đoạn chương trình sau là? trong đó a, b là các số nguyên không âm và n = max{a,b}.
(Chọn 2 phương án đùng)
scanf(&a,&b);
while (b!=0) {
r = a % b;
a = b;
b = r;
}
us=a
Độ phức tạp phụ thuộc vào số lần chia, tối đa là O(log n)
Độ phức tạp trung bình là O(log n) trong hầu hết các trường hợp.
Độ phức tạp là O(n) vì dùng phép chia dư trong vòng lặp
Thuật toán thực hiện trong thời gian hằng số O(1) vì số vòng lặp ít
Trong một đoạn chương trình có vòng lặp lồng nhau
for ( k = 1; k <= n ; k++)
for ( j = 1; j <= n ; j++)
<thao tác thân vòng lặp>
mỗi thao tác trong thân vòng lặp có độ phức tạp O(1). Phát biểu nào sau đây là đúng:
(Chọn 2 phương án đúng)
Độ phức tạp là O(n)
Độ phức tạp tổng thế là O(n²)
Số lần thực hiện thao tác O(1) là n x n
Vòng lặp trong thực hiện n lần
Trong một đoạn chương trình có vòng lặp lồng nhau
for ( =1;k<=n; k = k + 2 )
for (j = 1; j <= n; j = j + 2)
nếu mỗi thao tác trong thân vòng lặp có độ phức tạp O(1) thì độ phức tạp thời gian của đoạn chương trình là:
(Chọn 2 phương án đúng)
O(n)
O(logn)
O(n²)
O((n²) / 4)
Cho đoạn mã chương trình sau:
…
…
scan(&n);
while (n > 1) {
n = n - 2;
}
Với đầu vào n là số lẻ, phát biểu nào là đúng:
(Chọn 2 phương án đúng)
Vòng lập chạy nhưng dừng tại n = 1
Độ phức tạp là O(log n)
Vòng lặp thực hiện (n - 1)/2 lần
Vòng lặp không bao giờ dừng
Thuật toán được biểu diễn bằng lưu đồ khối sau, thực hiện:
Nhập dãy số n phần tử .
Xuất dãy số n phần tử .
Đếm dãy số n phần tử .
Duyệt dãy số n phần tử .
