C++程序获取右侧旋转后块的位置


假设我们有一个包含n个元素的数组A。A[i]表示在第i列上堆叠了A[i]个块。所有块都在一个封闭的透明边界框内。现在,如果我们将整个大盒子顺时针旋转90°,那么由于重力方向的变化,块会掉落,然后将其反转到其先前的方向。然后找到这些操作后类似于A的新数组。

问题类别

这个问题属于排序问题。当我们讨论计算机科学中不同的问题解决算法时,排序是一个非常常见的问题。顾名思义,排序表示将一组数据排列成某种方式。通常,我们可以按非递减顺序或非递增顺序排列它们。否则,排序也可以以预定义的方式进行。对于基于字符串的问题,有时我们指的是字典排序以按字典顺序排列字母。有许多不同的排序技术,具有某些变化及其时间和空间复杂度。迄今为止,基于比较的排序技术的最低时间复杂度为O(n*log n)。但是,也有一些机械排序技术,如桶排序、基数排序、计数排序,它们的时间复杂度为线性O(n)。有关进一步阅读,请点击以下链接 -

https://tutorialspoint.com/data_structures_algorithms/sorting_algorithms.htm

因此,如果我们问题的输入类似于A = [3, 2, 1, 2],则输出将为[1, 2, 2, 3]

步骤

为了解决这个问题,我们将遵循以下步骤 -

sort the array A
for initialize i := 0, when i < size of A, update (increase i by 1), do:
   print A[i]

示例

让我们看看下面的实现以获得更好的理解 -

#include <bits/stdc++.h>
using namespace std;
void solve(vector<int> A){
   sort(A.begin(), A.end());
   for (int i = 0; i < A.size(); i++)
      cout << A[i] << ", ";
}
int main(){
   vector<int> A = { 3, 2, 1, 2 };
   solve(A);
}

输入

{ 3, 2, 1, 2 }

输出

1, 2, 2, 3,

更新于: 2022年4月8日

152 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.