Quy hoạch động bài toán balo khối lượng M

  • Chào các anh/chị và các bạn, thì em đang gặp một vấn đề về quy hoạch động với đề như sau:
  • Em đã dựng cho mình một bảng phương án (tương tự như bài toán mỗi đồ vật ứng với một giá trị và tìm giá trị lớn nhất có thể lấy mà không lớn hơn khối lượng balo). Nhưng thay vì xét giá trị thì em lấy thẳng khối lượng và xét để lấy khối lượng lớn nhất cho mỗi thằng như sau:
  • Và đây là cài đặt của em, các tiền bối có thể chỉ giáo em đã lấn cấn ở chỗ nào không, em cảm ơn :blush:
int bag1(int weight[MAX], int n, int m, int K[MAX][MAX])
{
	for (int i = 0; i <= n; i++) {
		for (int w = 0; w <= m; w++) {
			if (i == 0 || w == 0) K[i][w] = 0;
			else if (weight[i] > w) K[i][w] = K[i - 1][w];
			else
				K[i][w] = max(K[i - 1][w], weight[i] + K[i - 1][w - weight[i]]);
		}
	}
	// In bảng
	for (int i = 0; i < n+1; i++){
		for (int j = 0; j < m+1; j++)
		{
			cout << K[i][j] << " ";
		}
		cout << "\n";
	}
	//In khối lượng lớn nhất
	return K[n][m];
}

Kết quả:
image

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