Đường đi có tổng lớn nhất

Xem dạng PDF

Gửi bài giải


Điểm: 0,05 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 512M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho một bảng ~A~ kích thước ~m \times n~ ~(1 \le m~, ~n \le 100)~, trên đó ghi các số nguyên ~a_{ij}~ ~(|a_{ij}| \le 100)~. Một người xuất phát tại ô nào đó của cột ~1~, cần sang cột ~n~ (tại ô nào cũng được).

Quy tắc đi: Từ ô ~(i, j)~ chỉ được quyền sang một trong ~3~ ô ~(i, j + 1)~; ~(i - 1, j + 1)~; ~(i + 1, j + 1)~

Input

Dòng ~1~: Ghi hai số ~m~, ~n~ là số hàng và số cột của bảng.

~M~ dòng tiếp theo, dòng thứ ~i~ ghi đủ ~n~ số trên hàng ~i~ của bảng theo đúng thứ tự từ trái qua phải

Output

Gồm 1 dòng duy nhất ghi tổng lớn nhất tìm được

Sample Input

5 7
9 -2 6 2 1 3 4
0 -1 6 7 1 3 3
8 -2 8 2 5 3 2
1 -1 6 2 1 6 1
7 -2 6 2 1 3 7

Sample Output

41

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    nguyentanlocefootball  đã bình luận lúc 8, Tháng 1, 2026, 11:10

    include <bits/stdc++.h>

    using namespace std; int a[105][105],dp[105][105]; int main(){ //freopen("inp","r",stdin); //freopen("out","w",stdout); iosbase::syncwithstdio(0); cin.tie(0); cout.tie(0); int n,m; cin>>n>>m; for (int i=0;i<n;++i){ for (int j=0;j<m;++j) cin>>a[i][j]; } for (int i=0;i<n;++i) dp[i][0]=a[i][0]; for (int j=1;j<m;++j){ for (int i=0;i<n;++i){ if (n==1) dp[i][j]=dp[i][j-1]+a[i][j]; else if (i==0) dp[i][j]=max(dp[i][j-1],dp[i+1][j-1])+a[i][j]; else if (i==n-1) dp[i][j]=max(dp[i][j-1],dp[i-1][j-1])+a[i][j]; else dp[i][j]=max({dp[i-1][j-1],dp[i][j-1],dp[i+1][j-1]})+a[i][j]; } } int ans=INTMIN; for (int i=0;i<n;++i) ans=max(ans,dp[i][m-1]); cout<<ans;
    }


  • 1
    hanguyen140210  đã bình luận lúc 6, Tháng 1, 2026, 7:15

    include<bits/stdc++.h>

    using namespace std;

    define vec vector

    define ll long long

    ll i,j; int main(){ iosbase::syncwithstdio(0); cin.tie(0);cout.tie(0); ll n,m;cin>>n>>m; vec<vec>a(n+1,vec<ll>(m+1)),dp(n+1,vec<ll>(m+1,-10001)); for(i=1;i<=n;i++){ for(j=1;j<=m;j++){ cin>>a[i][j]; } } for(i=1;i<=n;i++)dp[i][1]=a[i][1]; for(j=2;j<=m;j++){ for(i=1;i<=n;i++){ if(i==n){ dp[i][j]=max(dp[i][j-1],dp[i-1][j-1])+a[i][j]; } else dp[i][j]=max(dp[i-1][j-1],max(dp[i][j-1],dp[i+1][j-1]))+a[i][j]; } } ll ma=INT</vec>MIN; for(i=1;i<=n;i++)ma=max(ma,dp[i][m]); cout<<ma; }


  • -15
    THPTHD_Hieu  đã bình luận lúc 15, Tháng 5, 2025, 6:48

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


    • -7
      RussVN123  đã bình luận lúc 21, Tháng 5, 2025, 5:39

      Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


    • -7
      anle82917  đã bình luận lúc 21, Tháng 5, 2025, 5:21

      Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -6
    daotrungkiena1k46  đã bình luận lúc 20, Tháng 4, 2025, 13:19

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -7
    memme  đã bình luận lúc 12, Tháng 1, 2025, 15:07

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -4
    HUNG2010  đã bình luận lúc 14, Tháng 12, 2024, 3:36

    include<bits/stdc++.h>

    define maxN 105

    using namespace std; const int INF = 1e9;

    int n, m; int a[maxN][maxN], f[maxN][maxN];

    void enter() { cin >> m >> n; for (int i =1; i <= m; i++){ for (int j =1; j <= n; j++) cin >> a[i][j]; } }

    void solve(){ for (int i = 0; i <= m; i++) f[i][0] = 0; for (int i =0; i <= n; i++) f[0][i] = -INF; for (int i =0; i <= n; i++) f[m+1][i] = -INF; for (int j = 1; j <=n; j++){ for (int i =1; i <= m; i++) f[i][j] = max(max(f[i-1][j-1], f[i][j-1]), f[i+1][j-1]) + a[i][j];
    } int res = -INF; for (int i = 1; i <=m; i++) res = max(res, f[i][n]); cout<<res; }

    int main(){ enter(); solve(); }


  • 1
    nguyenduychan2024  đã bình luận lúc 23, Tháng 10, 2024, 11:01 chỉnh sửa

    =3


  • -11
    m1nkpk4nn  đã bình luận lúc 6, Tháng 8, 2024, 16:02 chỉnh sửa

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • 1
    melondepchai  đã bình luận lúc 13, Tháng 6, 2024, 8:47

    4 test cuối xử lý như nào vậy mọi người, em sai 4 test cuối mà không biết fix sao?!!


    • 6
      ducquoc  đã bình luận lúc 14, Tháng 1, 2025, 13:52 chỉnh sửa

      Khả năng cao edge cases là tính min/max bị sai, hoặc vượt giá trị biên.

      hint:

      https://oj.vnoi.info/problem/qbmax/editorial#comment-8237

      Hope this helps,


    • 1
      tranvandailong2k23  đã bình luận lúc 17, Tháng 11, 2024, 8:50

      bạn pk khởi tạo các giá trị ngoài ô thành 1 số âm cưc lớn ms đc


    • 1
      DongDuc08  đã bình luận lúc 8, Tháng 8, 2024, 8:38

      fix dc chx banj toi cung bi sai y het ma kbt suawr o dau


  • -4
    HUY312132  đã bình luận lúc 19, Tháng 1, 2024, 7:27 chỉnh sửa

    s


  • -3
    Tloi_07  đã bình luận lúc 5, Tháng 1, 2024, 1:29

    tloi


  • -8
    Quangdpm  đã bình luận lúc 23, Tháng 12, 2023, 3:06

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -67
    themluachon2008  đã bình luận lúc 8, Tháng 10, 2023, 9:20

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -4
    Hiiragi_Sergan  đã bình luận lúc 1, Tháng 9, 2023, 9:15

    Fix bug tùm lum luôn x__x


  • -44
    ksomg  đã bình luận lúc 4, Tháng 1, 2022, 16:10

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -62
    DoanTungLamKoCopyCode  đã bình luận lúc 31, Tháng 10, 2021, 13:57

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • 0
    mikamikaela  đã bình luận lúc 3, Tháng 8, 2021, 7:40

    Tác giả cho em hỏi có thực sự là (-100 <= A[i][j] <= 100) với mọi i, j không tác giả ơi.

    Vì em để MIN là -(1e9+7) thì AC, còn để MIN là -107 thì tạch :V


    • 18
      ngfam  đã bình luận lúc 3, Tháng 8, 2021, 15:10

      ~ abs(A[i][j]) \leq 100 ~ thì tổng đường đi có thể xuống ~-100 \times M~ nhé.


      • -13
        mikamikaela  đã bình luận lúc 5, Tháng 8, 2021, 15:32

        Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


        • -6
          jalsol  đã bình luận lúc 5, Tháng 8, 2021, 23:45

          Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -214
    dungp24  đã bình luận lúc 30, Tháng 5, 2021, 4:11 chỉnh sửa

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.