Giả sử chúng ta có một mảng A với n phần tử. Hàm F (p) là một mảng được sắp xếp gồm các tổng của các phần tử liền kề trong p. Vậy F (p) =sort ([p1 + p2, p2 + p3, ... pn-1 + pn]). Chúng ta có một hoán vị được biểu diễn ở A. Chúng ta phải tìm hoán vị khác nhau của A trong đó F (A) giống nhau.
Vì vậy, nếu đầu vào là A =[2, 1, 6, 5, 4, 3], thì đầu ra sẽ là [1, 2, 5, 6, 3, 4], bởi vì F (A) =sort ( [2 + 1, 1 + 6, 6 + 5, 5 + 4, 4 + 3]) =sort ([3, 7, 11, 9, 7]) =[3,7,7,9,11]. Và sort ([1 + 2, 2 + 5, 5 + 6, 6 + 3, 3 + 4]) =sort ([3, 7, 11, 9, 7]) =[3, 7, 7, 9, 11]. (Cũng có thể có các câu trả lời khác)
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 := n - 1, when i >= 0, update (decrease i by 1), do: print A[i]
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; void solve(vector<int> A) { int n = A.size(); for (int i = n - 1; i >= 0; i--) cout << A[i] << ", "; } int main() { vector<int> A = { 2, 1, 6, 5, 4, 3 }; solve(A); }
Đầu vào
{ 2, 1, 6, 5, 4, 3 }
Đầu ra
3, 4, 5, 6, 1, 2,