-
-
-
- Lớp 2
- Tự nhiên và xã hội
- Tiếng việt
- Toán học
- Tiếng Anh
- Đạo đức
- Âm nhạc
- Mỹ thuật
- HĐ trải nghiệm, hướng nghiệp
- Lớp 4
- Khoa học
- Tiếng việt
- Toán học
- Đạo đức
- Tiếng Anh
- Lịch sử và Địa lí
- Công nghệ
- HĐ trải nghiệm, hướng nghiệp
- GD Thể chất
- Âm nhạc
- Lớp 5
- Khoa học
- Toán học
- Tiếng việt
- Tin học
- Tiếng Anh
- Đạo đức
- Lịch sử và Địa lí
- HĐ trải nghiệm, hướng nghiệp
- Lớp 6
- Công nghệ
- Tin học
- Lịch sử và Địa lí
- GDCD
- Ngữ văn
- Toán học
- Khoa học tự nhiên
- Tiếng Anh
- Âm nhạc
- Mỹ thuật
- HĐ trải nghiệm, hướng nghiệp
- Lớp 7
- Tiếng Anh
- GDCD
- Toán học
- Công nghệ
- Tin học
- Ngữ văn
- Lịch sử và Địa lí
- Khoa học tự nhiên
- HĐ trải nghiệm, hướng nghiệp
- Âm nhạc
- Lớp 8
- Tiếng Anh
- GDCD
- Toán học
- Công nghệ
- Ngữ văn
- Khoa học tự nhiên
- Lịch sử và Địa lí
- HĐ trải nghiệm, hướng nghiệp
- GD Thể chất
- Âm nhạc
- Lớp 9
- Tiếng Anh
- GDCD
- Toán học
- Công nghệ
- Tin học
- Ngữ văn
- Khoa học tự nhiên
- HĐ trải nghiệm, hướng nghiệp
- Lịch sử và Địa lí
- Lớp 10
- Hóa học
- Tiếng Anh
- Lịch sử
- Sinh học
- Địa lí
- Vật lí
- Tin học
- Toán học
- GD kinh tế và pháp luật
- Công nghệ
- Ngữ văn
- HĐ trải nghiệm, hướng nghiệp
- GD Thể chất
- GD Quốc phòng và An ninh
- Lớp 11
- Hóa học
- Tiếng Anh
- Vật lí
- Tin học
- Toán học
- Địa lí
- Công nghệ
- Lịch sử
- Ngữ văn
- Sinh học
- GD Thể chất
- GD Quốc phòng và An ninh
- GD kinh tế và pháp luật
- HĐ trải nghiệm, hướng nghiệp
-
-
- KHÁM PHÁ
-
-
-
-
-
-
-
-
- FAVORITES
-
- Hỏi đáp
- Tin Học
- Lớp 9
- Một dãy các số nguyên A[1..N] là dãy số có N phần tử trong đó giá trị của các phần tử là các số nguyên. Yêu cầu: Cho 1 dãy gồm N số nguyên. Hãy tìm số lượng các phần tử liên tiếp dài nhất trong dãy số nguyên có
Một dãy các số nguyên A[1..N] là dãy số có N phần tử trong đó giá trị của các phần tử là các số nguyên. Yêu cầu: Cho 1 dãy gồm N số nguyên. Hãy tìm số lượng các phần tử liên tiếp dài nhất trong dãy số nguyên có
Một dãy các số nguyên A[1..N] là dãy số có N phần tử trong đó giá trị của các phần tử là các số nguyên. Yêu cầu: Cho 1 dãy gồm N số nguyên. Hãy tìm số lượng các phần tử liên tiếp dài nhất trong dãy số nguyên có giá trị dương. Dữ liệu: Ghi ra tệp LIENTUC.INP gồm: - Dòng đầu tiên chứa số nguyên N (2 <= N <= 5000); - Dòng thứ hai chứa giá trị các phần tử A[i] của dãy (-109<= A[i] <= 109). Kết quả: Xuất ra tệp LIENTUC.OUT độ dài lớn nhất của dãy số tìm được. Nếu không có kết quả thì in ra 0. Ví dụ: LIENTUC.INP LIENTUC.OUT 10 2 10 -2 3 5 1 -1 1 1 1 3 4 6 8 10 Giải thích: Dãy liên tục dài nhất tìm được là A[4..6] = {3, 5, 1}. Vậy số lượng phần tử có giá trị dương dài nhất là 3.
lam trong c++
Câu trả lời này dùng AI, hãy kiểm tra lại trước khi sử dụng
```cpp
#include
#include
#include
using namespace std;
int main() {
ifstream inp("LIENTUC.INP");
ofstream out("LIENTUC.OUT");
int N;
inp >> N;
vector A(N);
for (int i = 0; i < N; ++i) {
inp >> A[i];
}
int max_length = 0;
int current_length = 0;
for (int i = 0; i < N; ++i) {
if (A[i] > 0) {
current_length++;
} else {
// Khi gặp số không dương, kiểm tra và cập nhật max_length
if (current_length > max_length) {
max_length = current_length;
}
current_length = 0;
}
}
// Kiểm tra lần cuối cùng nếu dãy kết thúc bằng các số dương
if (current_length > max_length) {
max_length = current_length;
}
out << max_length << endl;
inp.close();
out.close();
return 0;
}
```
Giải thích chi tiết:
1. Đọc dữ liệu từ file `LIENTUC.INP`:
- Mở file `LIENTUC.INP` để đọc dữ liệu vào.
- Đọc số nguyên `N` từ dòng đầu tiên, đây là số lượng phần tử trong dãy số.
- Đọc các phần tử của dãy số vào vector `A`.
2. Tìm dãy liên tục dài nhất có giá trị dương:
- Khởi tạo hai biến `max_length` để lưu độ dài dãy liên tục dài nhất tìm được và `current_length` để đếm độ dài của dãy hiện tại.
- Duyệt qua từng phần tử của dãy `A`:
- Nếu phần tử hiện tại lớn hơn 0, tăng `current_length`.
- Nếu phần tử hiện tại không lớn hơn 0:
- So sánh `current_length` với `max_length`. Nếu `current_length` lớn hơn, cập nhật `max_length`.
- Đặt lại `current_length` về 0 để bắt đầu đếm lại từ đầu.
3. Xử lý trường hợp dãy kết thúc bằng các số dương:
- Sau khi duyệt xong, nếu `current_length` lớn hơn `max_length`, cập nhật `max_length` một lần nữa. Điều này đảm bảo rằng nếu dãy kết thúc bằng các số dương, chúng vẫn được tính vào.
4. Xuất kết quả ra file `LIENTUC.OUT`:
- Ghi giá trị `max_length` ra file `LIENTUC.OUT`. Nếu không có dãy số dương liên tục nào, giá trị này sẽ là 0.
5. Đóng file:
- Đóng file đầu vào và đầu ra sau khi hoàn thành việc đọc và ghi dữ liệu.
Chương trình này tuân thủ yêu cầu của bài toán, tìm độ dài của dãy số dương liên tiếp dài nhất trong một dãy số nguyên.
#include
#include
#include
using namespace std;
int main() {
ifstream inp("LIENTUC.INP");
ofstream out("LIENTUC.OUT");
int N;
inp >> N;
vector
for (int i = 0; i < N; ++i) {
inp >> A[i];
}
int max_length = 0;
int current_length = 0;
for (int i = 0; i < N; ++i) {
if (A[i] > 0) {
current_length++;
} else {
// Khi gặp số không dương, kiểm tra và cập nhật max_length
if (current_length > max_length) {
max_length = current_length;
}
current_length = 0;
}
}
// Kiểm tra lần cuối cùng nếu dãy kết thúc bằng các số dương
if (current_length > max_length) {
max_length = current_length;
}
out << max_length << endl;
inp.close();
out.close();
return 0;
}
```
Giải thích chi tiết:
1. Đọc dữ liệu từ file `LIENTUC.INP`:
- Mở file `LIENTUC.INP` để đọc dữ liệu vào.
- Đọc số nguyên `N` từ dòng đầu tiên, đây là số lượng phần tử trong dãy số.
- Đọc các phần tử của dãy số vào vector `A`.
2. Tìm dãy liên tục dài nhất có giá trị dương:
- Khởi tạo hai biến `max_length` để lưu độ dài dãy liên tục dài nhất tìm được và `current_length` để đếm độ dài của dãy hiện tại.
- Duyệt qua từng phần tử của dãy `A`:
- Nếu phần tử hiện tại lớn hơn 0, tăng `current_length`.
- Nếu phần tử hiện tại không lớn hơn 0:
- So sánh `current_length` với `max_length`. Nếu `current_length` lớn hơn, cập nhật `max_length`.
- Đặt lại `current_length` về 0 để bắt đầu đếm lại từ đầu.
3. Xử lý trường hợp dãy kết thúc bằng các số dương:
- Sau khi duyệt xong, nếu `current_length` lớn hơn `max_length`, cập nhật `max_length` một lần nữa. Điều này đảm bảo rằng nếu dãy kết thúc bằng các số dương, chúng vẫn được tính vào.
4. Xuất kết quả ra file `LIENTUC.OUT`:
- Ghi giá trị `max_length` ra file `LIENTUC.OUT`. Nếu không có dãy số dương liên tục nào, giá trị này sẽ là 0.
5. Đóng file:
- Đóng file đầu vào và đầu ra sau khi hoàn thành việc đọc và ghi dữ liệu.
Chương trình này tuân thủ yêu cầu của bài toán, tìm độ dài của dãy số dương liên tiếp dài nhất trong một dãy số nguyên.
Đăng phản hồi
© 2024 Học Tốt Online - Chia Sẻ Tài Liệu Học Tập và Giải Bài Tập Miễn Phí Vietnamese