Такая задача: Дана матрица, заполненная нулями и единицами. Нужно вывести на экран максимальную область, заполненную единицами. Область должна быть прямоугольной, в остальном не имеет значения ее форма.
| Код | #include "stdafx.h" #include <iostream> using namespace std;
int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL,""); int mat[8][8]; for(int i=0; i<8; i++) for(int j=0;j<8;j++) mat[j][i]=rand()%2+0;
for(int i=0; i<8; i++){ cout<<endl; for(int j=0;j<8;j++) cout<<mat[j][i]<<" "; } int st=0; int sb=0; int qw=0, qe=0;; int x=0,y=0; for(int i=0; i<8; i++){ for(int j=0;j<8;j++){ if(mat[j][i]==1){ x=i; y=j; while(mat[j][i]!=0){ st++; } } for(int k=j;k<8;k++){ while(mat[k][st]!=0){ sb++; } } for(int r=st; r!=0; r--){ qw=st; while(mat[sb][r]!=0){ qw--; } } for(int z=qw; z!=0; z--){ while(mat[z][qw]!=0){ qe=z; } } if (x==qw && y==qe){ cout<<"это то: "; for(int g=x; g<st; g++){ cout<<endl; for(int h=y;h<sb;h++){ cout<<mat[g][h]<<" "; } } }
} }
cout<<endl; system("pause"); }
|
Где-то в коде зависает цикл. Долго отлаживал, так проблему и не нашел. |