Chúng tôi được cung cấp với giá của đồ chơi dưới dạng một mảng và một số tiền K trong tay. Mục tiêu là mua số tối đa. của đồ chơi với số lượng đó. Mỗi phần tử của mảng là một giá của một món đồ chơi duy nhất, vì vậy không. của đồ chơi là không. của các phần tử. Chúng tôi sẽ sắp xếp các mảng giá theo thứ tự tăng dần để có thể mua được tối đa đồ chơi có giá thấp hơn trước, sau đó là đồ chơi đắt tiền.
Đầu vào
toyprices [] ={10, 20, 12, 15, 50, 30} K =50
Đầu ra
Số tối đa. trong số đồ chơi có thể mua:3
Giải thích - Sắp xếp giá đồ chơi theo thứ tự tăng dần - {10, 12, 15, 20, 30, 50}
Đầu vào
toyprices [] ={50,40,30,20,10} K =25
Đầu ra
Số tối đa. trong số đồ chơi có thể mua:1
Giải thích - 25> 10,20 nhưng bạn chỉ có thể lấy một trong số chúng là 10 + 20 =30. Số lượng tối đa =1
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
-
Mảng số nguyên toyprice [] lưu trữ giá của đồ chơi.
-
Hàm maxToys (int price [], int N, int K) nhận mảng giá, độ dài và số tiền của nó
-
toycount được sử dụng để lưu trữ số không. đồ chơi có thể mua, ban đầu là 0.
-
Biến chi được sử dụng để kiểm tra số tiền được chi từ K.
-
Sắp xếp giá mảng [] theo thứ tự tăng dần bằng cách sử dụng sắp xếp (giá, giá + N);
-
Bắt đầu duyệt qua giá mảng [] từ giá thấp nhất, giá [0] cho đến cao nhất.
-
Tiếp tục cộng giá của món đồ chơi đã tiêu và kiểm tra xem <=K, nếu có thì tăng số tiền lên. Nghĩa là đồ chơi này có thể được lấy. Cập nhật chi tiêu =đã chi + giá [i].
-
Ở số tiền cuối cùng có số lượng đồ chơi có thể mua được.
Ví dụ
#includeusing namespace std; int maxToys (int price [], int N, int K) {int toycount =0; int chi =0; // chỉ số tiền đã chi đến K // sắp xếp giá sao cho giá nhỏ nhất được sắp xếp đầu tiên (giá, giá + N); for (int i =0; i Đầu ra
Số tối đa. trong số đồ chơi có thể mua:6