Đây là một kết quả khó, ít nhất là cho các kỹ năng tối thiểu của tôi.Với một mảng, hãy tìm các kết hợp của các số n nhỏ hơn c
Về cơ bản, người dùng nhập danh sách giá vào một mảng và sau đó số lượng mục mong muốn mà anh muốn mua và cuối cùng là chi phí tối đa không vượt quá.
Tôi cần kiểm tra số lượng kết hợp của số lượng mục mong muốn nhỏ hơn hoặc bằng chi phí đã cho.
Nếu vấn đề là số mục cố định trong kết hợp, giả sử 3, nó sẽ dễ dàng hơn nhiều với chỉ ba vòng chọn mỗi giá và thêm chúng để kiểm tra.
Nơi tôi nhận được bối cảnh là yêu cầu người dùng nhập bất kỳ số lượng mục nào, tối đa số mục trong mảng.
Đây là những gì tôi quyết định lúc đầu, trước khi nhận ra rằng người dùng có thể chỉ định các kết hợp của bất kỳ số nào, không chỉ ba. Nó được tạo ra với sự giúp đỡ từ một chủ đề tương tự ở đây, nhưng một lần nữa nó chỉ hoạt động nếu người dùng chỉ định anh ta muốn 3 mục cho mỗi kết hợp. Nếu không nó không hoạt động.
// test if any combinations of items can be made
for (one = 0; one < (count-2); one++) // count -2 to account for the two other variables
{
for (two = one + 1; two < (count-1); two++) // count -1 to account for the last variable
{
for (three = two + 1; three < count; three++)
{
total = itemCosts[one] + itemCosts[two] + itemCosts[three];
if (total <= funds)
{
// DEBUG printf("\nMatch found! %d + %d + %d, total: %d.", itemCosts[one], itemCosts[two], itemCosts[three], total);
combos++;
}
}
}
}
Theo tôi có thể dễ dàng điều chỉnh tính linh hoạt dựa trên số mục mong muốn của người dùng trên mỗi kết hợp.
Tôi thực sự đánh giá cao bất kỳ trợ giúp nào được cung cấp.
Vì vậy, chức năng này sẽ trả lại tất cả tổ hợp có thể có kích thước quy định trong mảng? Ngoài ra, bạn đã khai báo hàm này là void nhưng sau đó tiến hành trả về các giá trị từ nó. – Patrick
Được rồi, vì vậy tôi không thấy nó. Tôi giả sử bạn chạy hàm này trong vòng lặp khác làm tăng chỉ mục bắt đầu và thêm số 1 hoặc 0 trả về từ hàm vào biến combos ban đầu. – Patrick
@Patrick Tôi đã khắc phục một số lỗi nhỏ và thêm bản trình diễn. Vui lòng xem liên kết. – dasblinkenlight