Bài tập  /  Bài đang cần trả lời

Bài toán tìm số

----- Nội dung dịch tự động từ ảnh -----
Bài 5 (4điểm).Bài toán tìm số.
Tranh thủ giờ ra chơi, hai bạn Hoàng và Tường rủ nhau chơi trò chơi tìm số.
Hai bạn lần lượt mỗi người viết một số nguyên lên bảng, Hoàng viết số thứ nhất,
Tường viết số thứ hai, rồi đến lượt Hoàng viết số thứ ba, ... Cứ tiếp tục như vậy hai
bạn viết được một dãy số gồm n số a1,a2,...,an. Khi hai bạn chưa kết thúc trò chơi của
mình thì đã đến giờ học, giáo viên vào lớp thấy dãy số trên bảng, giáo viên đặt ra
câu đố: "tìm một đoạn số liên tiếp trong dãy số trên sao cho tổng giá trị các số trong
đoạn đó là lớn nhất”. Vì dãy số có quá nhiều số nên cả lớp nhìn hoa cả mắt mà vẫn
chưa tìm ra đáp án. Em hãy viết chương trình giải câu đố trên giúp các bạn nhé.
Dữ liệu: Dòng đầu tiên ghi số nguyên n.(1≤n≤1000).
Dòng thứ hai ghi dãy n số nguyên a1,02,...,n
Kết quả:Dòng thứ nhất ghi đoạn các số liên tiếp trong dãy cótổng lớn nhất.
Dòng thứ hai ghi tổng giá trị tìm được.
INPUT
10
2-941-358-731
OUTPUT
41-358
Day co tong lon nhat: 15
1 trả lời
Hỏi chi tiết
104
0
0
haha
02/12/2023 15:16:24
#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  cin >> n;
  int a[n];
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  int dp[n + 1];
  dp[0] = 0;
  for (int i = 1; i <= n; i++) {
    dp[i] = INT_MIN;
    for (int j = 0; j < i; j++) {
      dp[i] = max(dp[i], dp[j] + a[i - j - 1]);
    }
  }
  int max_sum = INT_MIN;
  int start = 0, end = 0;
  for (int i = 1; i <= n; i++) {
    if (dp[i] > max_sum) {
      max_sum = dp[i];
      start = 0;
      end = i;
    } else if (dp[i] == max_sum) {
      if (end - start > i - start) {
        start = 0;
        end = i;
      }
    }
  }
  cout << start + 1 << "-" << end << endl;
  cout << max_sum << endl;
  return 0;
}
 

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm
Trắc nghiệm Lập trình Lớp 9 mới nhất

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường

Học ngoại ngữ với Flashcard

×
Trợ lý ảo Trợ lý ảo
×
Gia sư Lazi Gia sư