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,
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP