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