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,
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP