기차 호감에 블루 브릿지 컵 너 한테은-112 알고리즘

알고리즘 호감 훈련
메모리 제한 1.0s : 시간 제한을 256.0MB을


문제에 대한 설명
  고등학교,하지만 그는 다른 사람이 보이더라도, 그것은 비교적 간단한 문제입니다, 그녀를 찾을 수 없습니다와. 호감은, 그가 할 수있는 유일한 일이다. 그는 그녀의 행동을 사로보고, 그녀의 장소에서 보았다 매일, 체조 만하면 충분하다. Caizhuan는 놀이터 아에, 당신의 위치는 그들의 관계는 벽돌 사이에 고정되어처럼 그들이 흔들 수 없습니다, 장소를 설 수 있다는 것입니다. 또 작업자 포장 기억 전체 운동장 타일링 사각형 두 사각형 벽돌 하나 거기 (운동장 전체 행렬의 각 요소는 사각형 벽돌이고, 행렬 R 개의 행과 C 열로 간주 될 수 있음) 파란색, 다른 빨간색. 우리는 그와 그녀 사이 가장 큰 고체 광장에 대한 "사랑의 표시"를 정의, 당신이 얻을 수있는 프로그램 쓰기 "사랑의 표시를."

 

입력 형식
  첫 번째 행의 두 개의 양의 정수 R C.
  다음으로 R 개의 행과 C 컬럼은 0 청색 벽돌로 나타내는 붉은 벽돌 (1)로 표시되는 전체 운동장을 서술.

 

출력 형식
  그와 그녀 사이에 "사랑 지수"를 의미하는 숫자입니다.

 

샘플 입력
. 5 8
0 0 0 1 1 1 1 0
. 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 1
. 1 1 1 1 1 1 0 0
. 1 1 1 1 1 0 0 1

 

출력 샘플
9

 

상기의 데이터 사이즈는 합의
  ; R & LT, C <= 10의 40 개 %의 데이터
  는 데이터 R & LT의 70 %, C <= 50;
  100 % 데이터 R, C <= 200;
 

#include <stdio.h>

int R, C;
int playground[202][202] = { 0 };

int max(int a, int b)
{
    return a > b ? a : b;
}

int find(int x, int y)
{
    int width;
    for (width = 2; x + width - 1 < R && y + width - 1 < C; ++width)
    {
        for (int i = x; i <= x + width - 1; ++i)
        {
            if (playground[i][y + width - 1] != playground[x][y])
                return (width - 1) * (width - 1);
        }
        for (int j = y; j <= y + width - 1; ++j)
        {
            if (playground[x + width - 1][j] != playground[x][y])
                return (width - 1) * (width - 1);
        }
    }
    return (width - 1) * (width - 1);
}

int main()
{
    scanf("%d %d", &R, &C);
    for (int i = 0; i < R; ++i)
        for (int j = 0; j < C; ++j)
            scanf("%d", &playground[i][j]);

    int max_area = 1;
    for (int i = 0; i < R; ++i)
        for (int j = 0; j < C; ++j)
            max_area = max(max_area, find(i, j));

    printf("%d", max_area);

    return 0;
}

 

发布了221 篇原创文章 · 获赞 40 · 访问量 4万+

추천

출처blog.csdn.net/liulizhi1996/article/details/104023663