fomasudoi
04-06-2009, 18:48
Cho một lưới ô vuông kích thước N*N. Từ 1 ô bất kỳ của lưới đc phép di chuyển sang ô có chung cạnh với nó. Cho trước số bước di chuyển (K), bắt đầu tính từ ô xuất phát (1,1), hãy tìm cách đi sao cho tổng các số trên các ô di chuyển qua là lớn nhất, mỗi ô của lưới có thể di chuyển qua bao nhiêu lần cũng được.
DỮ LIỆU: vào từ file NETSUM.INP có cấu trúc như sau:
- Dòng đầu chứa các số nguyên dương N,K ( 2 <= N <= 100, 1 <= K <= 10000).
- Dòng thứ i trong số N dòng tiếp theo chứa các số nguyên a là giá trị của các ô ( 0 < a <= 10000 )
KẾT QUẢ: Ghi ra file văn bản NETSUM.OUT:
- Dòng đầu tiên ghi tổng các số trên đường di chuyển đc
- K dòng tiếp theo mỗi dòng ghi tọa độ cảu 1 ô trên đường di chuyển ( bắt đầu từ (1,1) )
Ví dụ:
NETSUM.INP
5 7
1 1 1 1 1
1 1 3 1 9
1 1 6 1 1
1 1 3 1 1
1 1 1 1 1
NETSUM.OUT
21
1 1
2 1
2 2
2 3
3 3
2 3
3 3
Có bài toán như trên. Cách giải đệ quy thì dựa theo công thức:
f[i,j,k] = Max{f[i-1,j,k-1] , f[i+1,j,k-1] , f[i,j-1,k-1] , f[i,j+1,k-1]} + c[i,j]
Với
f[i,j,k]: lưu lại tổng lớn nhất trên hành trình khi đã đi được k phút và đang dừng tại ô (i,j)
c[i,j]: giá trị của ô (i,j)
Nhưng vẫn ko biết làm sao để chuyển về quy hoạch động và làm sao trace back để xuất tọa độ các ô đã đi qua. Ai có cao kiến xin giúp cái :(
DỮ LIỆU: vào từ file NETSUM.INP có cấu trúc như sau:
- Dòng đầu chứa các số nguyên dương N,K ( 2 <= N <= 100, 1 <= K <= 10000).
- Dòng thứ i trong số N dòng tiếp theo chứa các số nguyên a là giá trị của các ô ( 0 < a <= 10000 )
KẾT QUẢ: Ghi ra file văn bản NETSUM.OUT:
- Dòng đầu tiên ghi tổng các số trên đường di chuyển đc
- K dòng tiếp theo mỗi dòng ghi tọa độ cảu 1 ô trên đường di chuyển ( bắt đầu từ (1,1) )
Ví dụ:
NETSUM.INP
5 7
1 1 1 1 1
1 1 3 1 9
1 1 6 1 1
1 1 3 1 1
1 1 1 1 1
NETSUM.OUT
21
1 1
2 1
2 2
2 3
3 3
2 3
3 3
Có bài toán như trên. Cách giải đệ quy thì dựa theo công thức:
f[i,j,k] = Max{f[i-1,j,k-1] , f[i+1,j,k-1] , f[i,j-1,k-1] , f[i,j+1,k-1]} + c[i,j]
Với
f[i,j,k]: lưu lại tổng lớn nhất trên hành trình khi đã đi được k phút và đang dừng tại ô (i,j)
c[i,j]: giá trị của ô (i,j)
Nhưng vẫn ko biết làm sao để chuyển về quy hoạch động và làm sao trace back để xuất tọa độ các ô đã đi qua. Ai có cao kiến xin giúp cái :(