# Array# Simulation

d562 - 山寨版磁力蜈蚣

🔗 前往 ZeroJudge 原題

題目描述

題目描述了山寨版磁力蜈蚣的分解過程。蜈蚣由數字磁鐵組成,每次分解前會移除第一個磁鐵,然後將剩餘的磁鐵順序倒轉。程式需要模擬這個過程,並輸出每次分解後的磁鐵序列,直到只剩一個磁鐵為止。

解題思路

這題的解題思路是直接模擬題目的描述。首先讀取磁鐵的數量 n 和磁鐵序列 b。然後,在 n > 1 的情況下,迴圈執行以下操作:

  1. 移除第一個磁鐵。
  2. 將剩餘的磁鐵序列倒轉。
  3. 輸出倒轉後的磁鐵序列。
  4. 減少磁鐵數量 n。 迴圈結束的條件是 n <= 1,即只剩一個磁鐵時。

複雜度分析

  • 時間複雜度: O(n^2)
  • 空間複雜度: O(n)

程式碼

#include <iostream>
#include <string> 

using namespace std;

int main(){
	
	int a=0,tem=0;
	while(cin >> a){
		int b[a];
		for(int i=0;i<a;i++){
			cin >> b[i]; 
			cout << b[i] << " ";
		}
		while(a>0){
			for(int i=0;i<a/2;i++){
				tem=b[i];
				b[i]=b[a-i-1];
				b[a-i-1]=tem;
			}
			cout << endl;
			for(int i=0;i<a-1;i++){
				cout << b[i] << " ";
			}
			a--;
		}
		
	}
	
}

Discussion