-
-
-
- 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
- Dữ liệu: Vào từ tệp văn bản BUS.INP Dòng đầu tiên ghi số N. Dòng thứ hai ghi 9 số nguyên dương là giá tiền tương ứng của các đoạn 1, 2, …, 9 km. Kết quả: Ghi ra tệp văn bản BUS.OUT gồm một số nguyên duy nhất là số tiền ít
Dữ liệu: Vào từ tệp văn bản BUS.INP Dòng đầu tiên ghi số N. Dòng thứ hai ghi 9 số nguyên dương là giá tiền tương ứng của các đoạn 1, 2, …, 9 km. Kết quả: Ghi ra tệp văn bản BUS.OUT gồm một số nguyên duy nhất là số tiền ít
Dữ liệu: Vào từ tệp văn bản BUS.INP
Dòng đầu tiên ghi số N.
Dòng thứ hai ghi 9 số nguyên dương là giá tiền tương ứng của các đoạn 1, 2, …, 9 km.
Kết quả: Ghi ra tệp văn bản BUS.OUT gồm một số nguyên duy nhất là số tiền ít nhất phải trả.
Ví dụ:
BUS.INP
5
12 19 31 40 61 65 69 79 90
BUS.OUT
50
Code bằng c++ , không dùng vector và các full test đều đúng
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 input("BUS.INP");
ofstream output("BUS.OUT");
int N;
input >> N;
int price[9];
for (int i = 0; i < 9; i++) {
input >> price[i];
}
int dp[1001]; // Khai báo mảng dp có kích thước tối đa 1000km
for (int i = 1; i <= N; i++) {
dp[i] = INT_MAX; // Khởi tạo giá trị lớn nhất
}
dp[0] = 0; // Không tốn tiền khi không di chuyển
for (int i = 1; i <= N; i++) {
for (int j = 0; j < 9; j++) {
if (i >= (j + 1)) {
dp[i] = min(dp[i], dp[i - (j + 1)] + price[j]);
}
}
}
output << dp[N]; // Ghi kết quả vào tệp
input.close();
output.close();
return 0;
}
```
Giải thích chi tiết:
Chương trình này sử dụng phương pháp quy hoạch động để tính toán số tiền chi phí thấp nhất để đi một khoảng cách N km bằng xe buýt, với giá vé cho từng đoạn đường từ 1 đến 9 km đã được cung cấp.
1. Khởi tạo: Đầu tiên, chương trình đọc từ tệp `BUS.INP`, bao gồm số km N và giá vé cho từng đoạn. Mảng `dp` được sử dụng để lưu trữ chi phí tối thiểu cho từng khoảng cách từ 0 đến N.
2. Khởi tạo giá trị: Tất cả các giá trị trong mảng `dp` (trừ dp[0]) đều được khởi tạo thành một giá trị lớn nhất (`INT_MAX`), trong khi dp[0] được đặt bằng 0 vì không tốn tiền khi không di chuyển.
3. Tính toán: Sử dụng hai vòng lặp:
- Vòng lặp ngoài chạy từ 1 đến N (khoảng cách cần tính toán).
- Vòng lặp trong kiểm tra từng đoạn từ 1 đến 9 km (vị trí j) để cập nhật giá trị dp cho khoảng cách hiện tại. Nếu khoảng cách `i` lớn hơn hoặc bằng `j + 1`, thì chương trình tính toán chi phí mới bằng cách so sánh giữa chi phí hiện tại và chi phí của đoạn trước cộng với giá vé của đoạn hiện tại.
4. Kết quả: Cuối cùng, chương trình ghi kết quả chi phí tối thiểu vào tệp `BUS.OUT`.
Cách tiếp cận này đảm bảo rằng tất cả các cách kết hợp của các đoạn đường được xem xét, và do đó tìm ra số tiền ít nhất có thể phải trả để di chuyển N km.
#include
#include
#include
using namespace std;
int main() {
ifstream input("BUS.INP");
ofstream output("BUS.OUT");
int N;
input >> N;
int price[9];
for (int i = 0; i < 9; i++) {
input >> price[i];
}
int dp[1001]; // Khai báo mảng dp có kích thước tối đa 1000km
for (int i = 1; i <= N; i++) {
dp[i] = INT_MAX; // Khởi tạo giá trị lớn nhất
}
dp[0] = 0; // Không tốn tiền khi không di chuyển
for (int i = 1; i <= N; i++) {
for (int j = 0; j < 9; j++) {
if (i >= (j + 1)) {
dp[i] = min(dp[i], dp[i - (j + 1)] + price[j]);
}
}
}
output << dp[N]; // Ghi kết quả vào tệp
input.close();
output.close();
return 0;
}
```
Giải thích chi tiết:
Chương trình này sử dụng phương pháp quy hoạch động để tính toán số tiền chi phí thấp nhất để đi một khoảng cách N km bằng xe buýt, với giá vé cho từng đoạn đường từ 1 đến 9 km đã được cung cấp.
1. Khởi tạo: Đầu tiên, chương trình đọc từ tệp `BUS.INP`, bao gồm số km N và giá vé cho từng đoạn. Mảng `dp` được sử dụng để lưu trữ chi phí tối thiểu cho từng khoảng cách từ 0 đến N.
2. Khởi tạo giá trị: Tất cả các giá trị trong mảng `dp` (trừ dp[0]) đều được khởi tạo thành một giá trị lớn nhất (`INT_MAX`), trong khi dp[0] được đặt bằng 0 vì không tốn tiền khi không di chuyển.
3. Tính toán: Sử dụng hai vòng lặp:
- Vòng lặp ngoài chạy từ 1 đến N (khoảng cách cần tính toán).
- Vòng lặp trong kiểm tra từng đoạn từ 1 đến 9 km (vị trí j) để cập nhật giá trị dp cho khoảng cách hiện tại. Nếu khoảng cách `i` lớn hơn hoặc bằng `j + 1`, thì chương trình tính toán chi phí mới bằng cách so sánh giữa chi phí hiện tại và chi phí của đoạn trước cộng với giá vé của đoạn hiện tại.
4. Kết quả: Cuối cùng, chương trình ghi kết quả chi phí tối thiểu vào tệp `BUS.OUT`.
Cách tiếp cận này đảm bảo rằng tất cả các cách kết hợp của các đoạn đường được xem xét, và do đó tìm ra số tiền ít nhất có thể phải trả để di chuyển N km.
Đăng phản hồi
© 2025 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
