題目敘述
每筆測資第一行有六個正整數N、M、R1、C1、R2、C2,接下來要輸入一個N乘以M的二維字元。R1到R2代表上下,C1到C2代表左右,要求輸出這個二維字元中的R1~R2、C1~C2的字串。
範例輸入 #1
10 14 4 3 10 9
VBREEFISHRACHP
ANACROCODILEEB
AOSTRICHTEGRDA
IADDHCHEETAHGD
BHRODRAVENENEG
EYWDLSAMOLELHE
ARTPVPRCBOLROR
RHTOAAHCROWAGH
CCANNORIAZEBRA
HANYTAEKNINAWA
範例輸出 #1
DOLPHIN
範例輸入 #2
3 4 1 1 3 1
ROAR
OINK
WOOF
範例輸出 #2
ROW
解題思路
這題可以直接用For迴圈將字元加起來,需要注意的是要先判斷答案的字串是要求左到右平行、上到下垂直、還是左上到右下斜的。
解題程式碼如下 (僅供參考):
#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";
}
留言
張貼留言