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

Chương trình C ++ để kiểm tra chúng ta có thể sắp xếp lại mảng theo cách mà công thức đã cho trả về m hay không

Giả sử chúng ta có một mảng A với n phần tử và một số khác m. Chúng tôi phải kiểm tra xem chúng tôi có thể sắp xếp lại mảng theo cách sao cho

$$ \ mathrm {\ sum_ {i =1} ^ {n} \ sum_ {j =1} ^ {n} \ frac {A [j]} {j} =m} $$

Sẽ không có làm tròn trong phép toán A [j] / j.

Vì vậy, nếu đầu vào là A =[2, 5, 1]; m =8, thì đầu ra sẽ là True, vì sắp xếp của [1, 2, 5], (1/1 + 2/2 + 5/3) + (2/2 + 5/3) + (5 / 3) =8

bước

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

sum := 0
n := size of A
for initialize i := 0, when i < n, update (increase i by 1), do:
   sum := sum + A[i]
if sum is same as m, then:
   return true
Otherwise
   return false

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, int m) {
   long sum = 0;
   int n = A.size();
   for (int i = 0; i < n; ++i) {
      sum += A[i];
   }
   if (sum == m)
      return true;
   else
      return false;
}

int main() {
   vector<int> A = { 2, 5, 1 };
   int m = 8;
   cout << solve(A, m) << endl;
}

Đầu vào

{ 2, 5, 1 }, 8

Đầu ra

1