Hỏi lỗi sai bài quy hoạch động cắt hình chữ nhật

#include <bits/stdc++.h>

using namespace std;
int res, hcn[35][35], f[35][35][35][35] , m, n;
int hcn2 (int x1, int y1, int x2, int y2)
{
    if ( f[x1][y1][x2][y2] != -1) return ( f[x1][y1][x2][y2]);
    int tong=0;
    for ( int i=x1; i<=x2; i++ )
        for ( int j=y1; j<=y2; j++)  tong += hcn[i][j];
        res=m*n;
    if ( tong  ==  0 || tong == (x2-x1+1)*(y2-y1+1))
    {
         f[x1][y1][x2][y2] = 1;
         return ( f[x1][y1][x2][y2] );
    }
    for (int i=x1; i<x2; i++) if (res > (hcn2(x1,y1,i,y2) + hcn2 (i+1,y1,x2,y2)))  res= f[x1][y1][i][y2]+f[i+1][y1][x2][y2];

    for (int i=y1; i<y2; i++)  if (res>(hcn2(x1,y1,x2,i) + hcn2 (x1,i+1,x2,y2)) ) res=f[x1][y1][x2][i]+f[x1][i+1][x2][y2];
    f[x1][y1][x2][y2] =res;;
    return res;
}
int main()
{
    cin>>m>>n;

    for (int i=1; i<=m; i++)
        for (int j=1; j<=n; j++) cin>>hcn[i][j];

        memset(f, -1, sizeof(f));
       // cout<<f[0][0][0][0]<<endl;
        cout << hcn2(1,1,m,n);
    //for (int i=1; i<=m; i++)
        //for (int j=1; j<=n; j++) cout <<f[i][j][i][j]<<endl;

    return 0;
}

Mọi người cho e hỏi code của e chạy test chỉ ra 7 mà kq của test là 8
74f42b0a88

Hi there,

Bọn tớ có nhận được complain nói rằng cậu chưa cải thiện cách đặt câu hỏi. Tớ đồng ý với quan điểm đó, khi xem lại các topic cũ của cậu, và thấy cậu thường xuyên đăng thiếu thông tin khi hỏi.
Cậu vui lòng bổ sung thêm thông tin đề bài tại post đầu tiên của cậu nhé! Sau khi sửa xong, vui lòng reply lại topic này, bọn tớ sẽ xem xét.

Regards,
Library

3 Likes

mình sửa lại rồi bạn ơi

1 Like

Cảm ơn cậu nhé @Binh_Bao1. Nhớ chú ý ở các post sau nhé! :smile:

2 Likes

em làm được bài rồi, cảm ơn mọi người đã xem post

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?