# Array# Simulation# Basic Input/Output

b367 - 翻轉世界

🔗 前往 ZeroJudge 原題

題目描述

題目要求判斷一個由 0 和 1 組成的矩陣,經過 180 度翻轉後是否與原矩陣相同。如果相同,輸出 "go forward",否則輸出 "keep defending"。

解題思路

題目描述的是一個簡單的矩陣翻轉判斷問題。解題思路是讀取矩陣的尺寸(長和寬),然後讀取矩陣的元素。接著,對矩陣進行 180 度翻轉的模擬,即將矩陣中的元素按照對角線翻轉。最後,比較翻轉後的矩陣與原始矩陣是否相同。如果相同,則輸出 "go forward",否則輸出 "keep defending"。

複雜度分析

  • 時間複雜度: O(n*m) 其中 n 是矩陣的長度,m 是矩陣的寬度。需要遍歷整個矩陣進行比較。
  • 空間複雜度: O(nm) 需要一個大小為 nm 的陣列來儲存矩陣的元素。

程式碼

#include <iostream>
using namespace std;
int main(){
	int a,b;
	cin >> a;
	while(cin >> a >> b){
		int ab=a*b,c[ab];
		for(int i=0;i<ab;i++)
			cin >> c[i];
		bool ans=0;
		for(int i=0;i<ab&&ans==0;i++)
			if(c[i]!=c[ab-i-1])
					ans=1;
		(ans==0)?printf("go forward\n"):printf("keep defending\n");
	}
}

Discussion