題目
Find the side length of largest square, center at (r, c).
UVa 連結
ZeroJudge 連結
解法
從中間往外擴散,記得檢查邊界。
#include <iostream>
#include <string>
using namespace std;
int main(){
int T, m, n, q, r, c;
string s;
cin >> T;
while(T--){
cin >> m >> n >> q;
cout << m << ' ' << n << ' ' << q << '\n';
char a[m][n];
for(int i=0; i<m; i++){
cin >> s;
for(int j=0; j<n; j++){
a[i][j] = s[j];
}
}
while(q--){
cin >> r >> c;
int count = 1;
bool allSame = true;
while(allSame){
for(int i=r-count; i<=r+count; i++){
for(int j=c-count; j<=c+count; j++){
if(r-count >= 0 && r+count < m && c-count >= 0 && c+count < n){
if(a[i][j] != a[r][c]){
allSame = false;
break;
}
}else{
allSame = false;
break;
}
}
}
if(allSame){
count++;
}
}
cout << 1 + (count - 1) * 2 << '\n';
}
}
}👉 回到:【CPE大學程式能力檢定】目錄