Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- #define N 200
- using namespace std;
- //ifstream cin("date.in");
- //ofstream cout("date.out");
- char cuv[N];
- int i,n,j,A[N][8];
- void Binar(char c,int v[8])
- {
- unsigned x=unsigned(c);
- for(i=0; i<8; i++) v[i]=0;
- i=7;
- while(x)
- {
- v[i--]=x%2;
- x/=2;
- }
- }
- void Generare(char cuv[N],int A[N][8],int &n)
- {
- int v[8];
- n=strlen(cuv);
- for(int i=0; i<n; i++)
- {
- Binar(cuv[i],v);
- for(int j=0; j<8; j++)
- A[i+1][j+1]=v[j];
- }
- }
- void Afisare(int A[N][8],int n)
- {
- for(int i=1; i<=n; i++)
- {
- for(int j=1; j<=8; j++)
- cout<<A[i][j]<<" ";
- cout<<"\n";
- }
- }
- int submat(int A[N][8],int n,int x)
- {
- int S[N][8]= {0};
- int i, j;
- for (i=1; i<=n; i++) S[i][i]=A[i][1];
- for (j=1; j<=8; j++) S[1][j]=A[1][j];
- for (i=2; i<=n; i++)
- for (j=2; j<=8; j++)
- if (A[i][j]==x) S[i][j]==x;
- else S[i][j]=min(S[i][j-1],min(S[i-1][j],S[i-1][j-1]))+1;
- int maxi=0;
- for(i=1;i<=n;i++)
- for(j=1;j<=8;j++)
- if(S[i][j]>maxi)
- maxi=S[i][j];
- return maxi;
- }
- int main()
- {
- cin>>cuv;
- Generare(cuv,A,n);
- // Afisare(A,n);
- int k=submat(A,n,1);
- int p=submat(A,n,0);
- cout<<max(k,p);
- return 0;
- }
Add Comment
Please, Sign In to add comment