C++程式查詢排列,其中相鄰元素之和排序結果與給定陣列相同


假設我們有一個包含n個元素的陣列A。函式F(p)是p中相鄰元素之和的排序陣列。所以F(p) = sort([p1 + p2, p2 + p3, ... pn-1 + pn])。我們有一個用A表示的排列。我們必須找到A的不同排列,其中F(A)相同。

因此,如果輸入類似於A = [2, 1, 6, 5, 4, 3],則輸出將為[1, 2, 5, 6, 3, 4],因為F(A)=sort([2+1, 1+6, 6+5, 5+4, 4+3]) = sort([3, 7, 11, 9, 7]) = [3,7,7,9,11]。並且sort([1+2, 2+5, 5+6, 6+3, 3+4]) = sort([3, 7, 11, 9, 7]) = [3, 7, 7, 9, 11]。(也可能存在其他答案)

步驟

為了解決這個問題,我們將遵循以下步驟:

n := size of A
for initialize i := n - 1, when i >= 0, update (decrease i by 1), do:
   print A[i]

示例

讓我們看看下面的實現來更好地理解:

#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);
}

輸入

{ 2, 1, 6, 5, 4, 3 }

輸出

3, 4, 5, 6, 1, 2,

更新於: 2022年3月3日

175 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.