日期:2025年10月11日
ZeroJudge 題目連結:f418. Word Search Puzzle
解題想法
這題我用二維陣列儲存英文字謎資料,再依照測資給的 r1, c1 及 r2, c2 判斷要向右、向下或是向右下方找答案。
Python 程式碼
使用時間約為 23 ms,記憶體約為 3.3 MB,通過測試。
h, w, r1, c1, r2, c2 = map(int, input().split())
r1 -= 1; c1 -= 1; r2 -=1; c2 -= 1 # 題目的座標從 1 開始
grid = [list(input()) for _ in range(h)]
if r1 == r2: # 同一列,向右找
print("".join(grid[r1][c1:c2+1]))
elif c1 == c2: # 同一欄,向下找
print("".join([grid[i][c1] for i in range(r1, r2+1)]))
else: # 向右下方找
print("".join([grid[r1+i][c1+i] for i in range(r2-r1+1)]))
C++ 程式碼
使用時間約為 2 ms,記憶體約為 88 kB,通過測試。
#include <cstdio>
using namespace std;
int main() {
int h, w, r1, c1, r2, c2;
scanf("%d %d %d %d %d %d", &h, &w, &r1, &c1, &r2, &c2);
r1--; c1--; r2--; c2--; // 題目的座標從 1 開始
char grid[h][w]; // 字元陣列
for(int i=0; i<h; i++) scanf("%s", grid[i]);
if (r1 == r2) { // 同一列,向右找
for(int i=c1; i<=c2; i++) printf("%c", grid[r1][i]);
puts("");
} else if (c1 == c2) { // 同一欄,向下找
for(int i=r1; i<=r2; i++) printf("%c", grid[i][c1]);
puts("");
} else { // 向右下方找
for(int i=0; i<=r2-r1; i++) printf("%c", grid[r1+i][c1+i]);
puts("");
}
return 0;
}
沒有留言:
張貼留言