b367 - 翻轉世界
題目描述
題目要求判斷一個由 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");
}
}