Computer >> Máy Tính >  >> Lập trình >> C ++

Mã C ++ để đếm số tiền giấy tối đa mà ngân hàng có thể thu thập

Giả sử chúng ta có ba số k, l và m, và có một mảng A khác với n phần tử. Một tên cướp không cướp được ngân hàng nhưng đã mở được tất cả các két sắt của một ngân hàng. Khách hàng trống không quyết định lợi dụng vụ cướp bất thành này và lấy trộm một số tiền trong két sắt. Trong một hàng có nhiều két sắt. Tổng cộng có n tờ tiền trong tất cả các két. Tờ tiền thứ i nằm trong két A [i]. Nhân viên ngân hàng bây giờ có an toàn k. Có hai nhân viên bảo vệ, một nhân viên bảo vệ két sắt sao cho l k, (anh ta ở bên phải đồ vật). Hai người bảo vệ không di chuyển. Trong mỗi giây, Thứ có thể lấy tất cả tiền giấy từ két hiện tại hoặc chuyển sang bất kỳ két nào trong số các két liền kề. Tuy nhiên, anh ta không thể ghé thăm bất kỳ két sắt nào được bảo vệ bởi các nhân viên bảo vệ bất cứ lúc nào, vì anh ta có thể bị buộc tội ăn cắp. Chúng tôi phải tìm số lượng tiền giấy tối đa mà mọi thứ có thể thu thập được.

Vì vậy, nếu đầu vào giống như k =5; l =3; m =7; A =[4, 7, 5, 5, 3, 6, 2, 8], thì đầu ra sẽ là 4, bởi vì

Các bước

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

c1 := 0
n := size of A
c1 := 0
for initialize i := 0, when i < n, update (increase i by 1), do:
   x := A[i]
   if x > l and x < m, then:
      (increase c1 by 1)
return c1

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#include <bits/stdc++.h>
using namespace std;
int solve(int k, int l, int m, vector<int> A){
   int c1 = 0, x;
   int n = A.size();
   c1 = 0;
   for (int i = 0; i < n; i++){
      x = A[i];
      if (x > l && x < m)
         c1++;
   }
   return c1;
}
int main(){
   int k = 5;
   int l = 3;
   int m = 7;
   vector<int> A = { 4, 7, 5, 5, 3, 6, 2, 8 };
   cout << solve(k, l, m, A) << endl;
}

Đầu vào

5, 3, 7, { 4, 7, 5, 5, 3, 6, 2, 8 }

Đầu ra

4