Untitled
unknown
plain_text
a year ago
2.3 kB
2
Indexable
Never
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MaxPurchaseAmount { public static void main(String[] args) { // Danh sách các sản phẩm và giá tiền của chúng trong kho 1 và kho 2 Map<String, Integer> kho1 = new HashMap<>(); kho1.put("Sản phẩm A", 50); kho1.put("Sản phẩm B", 30); kho1.put("Sản phẩm C", 20); Map<String, Integer> kho2 = new HashMap<>(); kho2.put("Sản phẩm X", 40); kho2.put("Sản phẩm Y", 25); kho2.put("Sản phẩm Z", 15); // Số tiền có sẵn để mua hàng int soTienCoSan = 100; // Tính số tiền tối đa có thể mua được các sản phẩm int maxSoTienMuaDuoc = getMaxPurchaseAmount(kho1, kho2, soTienCoSan); System.out.println("Số tiền tối đa có thể mua được: " + maxSoTienMuaDuoc); } public static int getMaxPurchaseAmount(Map<String, Integer> kho1, Map<String, Integer> kho2, int soTienCoSan) { int maxSoTienMuaDuoc = 0; // Tạo danh sách các sản phẩm từ cả hai kho List<String> tatCaSanPham = new ArrayList<>(); tatCaSanPham.addAll(kho1.keySet()); tatCaSanPham.addAll(kho2.keySet()); // Duyệt qua tất cả các tổ hợp sản phẩm có thể mua for (int i = 0; i < (1 << tatCaSanPham.size()); i++) { int tongGiaTien = 0; for (int j = 0; j < tatCaSanPham.size(); j++) { if ((i & (1 << j)) > 0) { // Sản phẩm được chọn String sanPham = tatCaSanPham.get(j); int giaTienKho1 = kho1.getOrDefault(sanPham, 0); int giaTienKho2 = kho2.getOrDefault(sanPham, 0); // Chọn giá tốt nhất từ cả hai kho int giaTien = Math.min(giaTienKho1, giaTienKho2); tongGiaTien += giaTien; } } // Kiểm tra xem có mua được nhiều hơn không if (tongGiaTien <= soTienCoSan && tongGiaTien > maxSoTienMuaDuoc) { maxSoTienMuaDuoc = tongGiaTien; } } return maxSoTienMuaDuoc; } }