【題解】CPE 一顆星選集:36. Largest Square

題目

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大學程式能力檢定】目錄
發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *