熱門文章

2025年10月11日 星期六

ZeroJudge 解題筆記:f418. Word Search Puzzle

作者:王一哲
日期: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;
}


沒有留言:

張貼留言