Professional Documents
Culture Documents
Nhapmonthuattoan bt3
Nhapmonthuattoan bt3
Đối với mỗi phần tử kiểm tra xem có phải là số hoàn hảo không
Cài đặt
max = arr[i];
return max;
int main() {
return 0;
Câu 2
Bài 2. Kiểm tra mảng a có n số nguyên có phải là một đoạn con của mảng b có m số nguyên không?
Cài đặt:
Bool CheckCon(a[],b[],n,m)
If (n = 0) return True
Else if(m = 0) return False
Else
If(a[n-1] = b[m - 1])
return SauCon(a,b,n-1,m-1)
Else
return SauCon(a,b,n,m-1)
End if
End if
End function
Câu 3
Tinh chế lần 1
Chi tiết chức năng hàm kiểm tra một số có tồn tại trong mảng b hay không
Duyệt từng phần tử trong mảng b[], nếu số x tồn tại trong mảng b[] thì trả về False, ngược lại là True
Tinh chế lần 2
Chi tiết chức năng tạo mảng động b. Mảng động là mảng khi thêm và bớt các phần tử thì nó sẽ tự
động thêm hoặc thu hồi vùng nhớ. Độ dài mảng động là <tên mảng>.size() Vector <int> b
Tinh chế lần 3:
kiểm tra từng phần tử mảng a có tồn tại trong mảng b hay không, nếu không thì
thêm phần tử a[i] vào mảng b
Cài đặt
bool KTraTonTai(vector <int> a , int x)
for (int i = 0; i < a.size(); i++)
if(a[i] == x) return false;
End if
End for
return true;
End Function
// ham main
vector <int> b
for (int i = 0; i < n; i++)
if(KTraTonTai(b,a[i]))
b.push_back(a[i]);
End if
End for
print(b);
End function
II. Đánh giá độ phức tạp của các thuật toán Bài 4. Kiểm tra mảng đối xứng?
Thuật toán:
bool KTDoiXung(a[],n)
for (int i = 0; i < n/2; i++)
if(a[i] != a[n-1-i])
return false;
End if
End for
return true;
End function
ộ phức tạp: O(n) = n/2
Bài 5. Kiểm tra một số nguyên dương là số nguyên tố không?
Bool CheckPrime(n)
For(int i = 2; i <= sqrt(n); i++)
if(n%i == 0) return False
End if
End for
Return True
End function
Độ phức tạp: 0(n)= √𝑛
Bài 6. Liệt kê các số hoàn thiện nhỏ hơn hoặc bằng n. Thuật toán:
4651050044 – Nguyễn Khánh Dương
bool CheckPerfectNumber(int n)
int sum = 0;
for (int i = 1; i < n; i++)
if(n%i == 0)
sum+= i;
End if
End for
if(sum == n) return true;
End if
return false;
End function
// ham main
for (int i = 1; i <= n; i++)
if(CheckPerfectNumber(i))
cout << i << ' ';
End if
End for
Độ phức tạp: O(n) = n(n-1)
Bài 7. Tìm 2 số của mảng tổng bằng S. Thuật toán:
void sum_is_s(int a[], int n, int s)
for (int i = 0; i < n; ++i) {
for (int j = i+1; j < n; ++j) {
if(a[i] + a[j] == s)
cout << a[i] <<" va " << a[j] << endl;
End if
End for
End for
End function
Độ phức tạp O(n) = n2
Bài 8. Liệt kê dãy nhị phân chiều dài n.
Function dayNhiPhan(i, n, a[])
for j = 0 to 1:
a[i] = j
if i = n-1:
print(a)
else:
dayNhiPhan(i+1, n, a)
end if
end for
End function
Độ phức tạp: O(n) = n