Word Search Puzzle 是一種常見的英文字謎,通常由一個矩形的方格所構成,每一個方格中有一個字母。玩家可以由左至右、由上至下,或是由左上至右下找到連續的字母拼成指定的單字。
文文已經找到了一個單字,給你起始及結束的位罝,麻煩你把這個單字拼出來。
範例測資
範例輸入 | 範例輸出 |
---|---|
輸入的第一行有六個整數 H (1 ≤ H ≤ 20) 和 W (1 ≤ W ≤ 50),代表字謎的高與寬度, R1、C1 及 R2、C2 分別為起始及結束位置,R1 和 R2 是由上而下第幾列,C1 和 C2 是由左而右第幾個字元。(1 ≤ R1 ≤ R2 ≤ H,1 ≤ C1 ≤ C2 ≤ W) 接下來的 H 行,每行有 W 個大寫字母,代表這個字謎的內容。 | 輸出由起始位置到結束位置的連續字元所拼成的單字。 |
10 14 4 3 10 9 VBREEFISHRACHP ANACROCODILEEB AOSTRICHTEGRDA IADDHCHEETAHGD BHRODRAVENENEG EYWDLSAMOLELHE ARTPVPRCBOLROR RHTOAAHCROWAGH CCANNORIAZEBRA HANYTAEKNINAWA (本測資請見上圖) | DOLPHIN |
3 4 1 1 3 1 (請見下方表格) | ROW |
範例輸入/輸出 (表格)
R | O | A | R |
O | I | N | K |
W | O | O | F |
解題思路
這題可以直接用For迴圈將字元加起來,需要注意的是要先判斷答案的字串是要求左到右平行、上到下垂直、還是左上到右下斜的。
「左到右」就是 R 是固定的只需要跑 For迴圈 從 C1~C2。
「上到下」就是 C 是固定的只需要跑 For 迴圈 從 R1~R2。
「斜著走」就是跑 For 迴圈 從 R1~R2,但是同時加字元的時候也要一直將 C1 進行 +1。
範例程式碼-ZeroJudge F418: Word Search Puzzle
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N, M;
cin >> N >> M;
int R1, C1, R2, C2;
cin >> R1 >> C1 >> R2 >> C2;
vector<string>v;
for (int i = 0; i<N; i++)
{
string str;
cin >> str;
v.push_back(str);
}
string ans = "";
if (R1 == R2)
{
for (int i = C1-1; i<C2; i++)
{
ans += v[R1-1][i];
}
}
else if (C1 == C2)
{
for (int i = R1-1; i<R2; i++)
{
ans += v[i][C1-1];
}
}
else
{
for (int i = R1-1; i<R2; i++)
{
ans += v[i][C1-1];
C1++;
}
}
cout << ans << "\n";
}
//ZeroJudge F418
//Dr. SeanXD
讚啦,感謝分享
感謝你!!!