315
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