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

Chương trình C ++ để tìm hoán vị mà tổng của các phần tử liền kề được sắp xếp giống như mảng đã cho

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,