fbpx

Problema #1459 – dim_maxim_binar – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Considerăm codificarea binară a caracterelor, în care fiecărui simbol îi revine reprezentarea pe 8 biţi a codului său ASCII. De exemplu, caracterului 'A', având codul ASCII 65, îi va corespunde reprezentarea binară 01000001. Astfel, un cuvânt C poate fi reprezentat binar, sub forma unui tablou bidimensional, în care fiecare linie i a tabloului reprezintă codificarea binară a literei de pe poziţia i din C, tabloul având în final atâtea linii câte litere are cuvântul, şi 8 coloane.. Submatricea pătratică de dimensiune maximă este cea cu elementele subliniate.

#include <bits/stdc++.h>
using namespace std;

int a[101][9];

bool areamax(int i , int j , int x , int y)
{
    for(int c = i ; c <= x ; ++c)
        for(int d = j ; d <= y ; ++d)
            if(a[c][d]!=a[i][j])
                return 0;
    return 1;
}

int main()
{
    char s[101];
    cin >> s;
    int i = 0;
    while(s[i]!='\0')
    {
        int nr=(int)s[i];
        int j=0;
        while(nr)
        {
            a[i][j]=nr%2;
            nr/=2;
            j++;
        }
        i++;
    }
    int max=0;
    int x , y , z , t;
    //for(int j = 0 ; j < i ; ++j)
    //{
    //    for(int k = 0 ; k < 8 ; ++k)
    //        cout << a[j][k] << ' ';
    //    cout << endl;
    //}
    for(int j = 0 ; j < i ; ++j)
    {
        for(int k = 0 ; k < 8 ; ++k)
        {
            for(int q = 1 ; q + j < i && k + q < 8 ; ++q)
                if(areamax(j , k , j + q , k + q))
                    if(q > max)
                        max=q , x = j , y = k , z = j+q , t=k+q;
        }
    }
    cout << max+1;
    //cout << endl << x << ' ' << y << ' ' << z << ' ' << t;
}
Comentarii

S-ar putea sa iti placa