C++程式獲取右側旋轉後塊的位置


假設我們有一個包含n個元素的陣列A。A[i]表示在第i列上堆疊了A[i]個塊。所有塊都在一個封閉的透明邊界框內。現在,如果我們將整個大盒子順時針旋轉90°,那麼由於重力方向的變化,塊會掉落,然後將其反轉到其先前的方向。然後找到這些操作後類似於A的新陣列。

問題類別

這個問題屬於排序問題。當我們討論計算機科學中不同的問題解決演算法時,排序是一個非常常見的問題。顧名思義,排序表示將一組資料排列成某種方式。通常,我們可以按非遞減順序或非遞增順序排列它們。否則,排序也可以以預定義的方式進行。對於基於字串的問題,有時我們指的是字典排序以按字典順序排列字母。有許多不同的排序技術,具有某些變化及其時間和空間複雜度。迄今為止,基於比較的排序技術的最低時間複雜度為O(n*log n)。但是,也有一些機械排序技術,如桶排序、基數排序、計數排序,它們的時間複雜度為線性O(n)。有關進一步閱讀,請點選以下連結 -

https://tutorialspoint.tw/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.