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