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

Mã C ++ để kiểm tra số lượng cọc có hiệu lực từ ngày thứ hai

Giả sử chúng ta có hai mảng X và Y có cùng kích thước. Có những đống đá có X [i] số đá ở chỉ số thứ i trong ngày đầu tiên và vào ngày thứ hai chỉ số thứ i có Y [i] số đá. Vào ngày đầu tiên, nhiều thành viên đã đến. Hoặc họ không làm gì cả hoặc họ thêm một vài viên đá vào một số đống hoặc họ đổi một vài viên đá từ đống này sang đống khác. Chúng ta phải kiểm tra xem Y có hợp lệ từ X hay không.

Vì vậy, nếu đầu vào là X =[1, 2, 3, 4, 5]; Y =[2, 1, 4, 3, 5], thì đầu ra sẽ là True, vì di chuyển một viên đá từ cọc thứ hai sang cọc thứ nhất, một viên đá từ cọc thứ 4 sang cọc thứ 3.

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 -

n := size of A
for initialize i := 0, when i < n, update (increase i by 1), do:
   s := s + A[i]
for initialize i := 0, when i < n, update (increase i by 1), do:
   d := d + B[i]
return (if d > s, then false, otherwise true)

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;
bool solve(vector<int> A, vector<int> B){
   int n = A.size(), d = 0, s = 0;
   for (int i = 0; i < n; i++)
      s += A[i];
   for (int i = 0; i < n; i++)
      d += B[i];
   return d > s ? false : true;
}
int main(){
   vector<int> X = { 1, 2, 3, 4, 5 };
   vector<int> Y = { 2, 1, 4, 3, 5 };
   cout << solve(X, Y) << endl;
}

Đầu vào

{ 1, 2, 3, 4, 5 }, { 2, 1, 4, 3, 5 }

Đầu ra

1