Untitled

mail@pastecode.io avatar
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;
    }
}