$$ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Self-defined math definitions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Math symbol commands \newcommand{\intd}{\,{\rm d}} % Symbol 'd' used in integration, such as 'dx' \newcommand{\diff}{{\rm d}} % Symbol 'd' used in differentiation ... $$

C语言:找最大交错正方形

题目

图上有一个矩阵,由N*M个格子组成,这些格子由两种颜色构成,黑色和白色。请找到面积最大的且内部是黑白交错(即两个相连的正方形颜色不能相同)的正方形。

输入格式:第一行两个整数N和M,分别表示行数和列数。接下来有N行,每行M个数,0或1分别表示这个格子是黑色或白色。


代码


#include<stdio.h>

int n,m;

int check(int i,int j,int arr[n][m]){
    if((arr[i][j] != arr[i+1][j]) && (arr[i][j] != arr[i][j+1]) && (arr[i][j] == arr[i+1][j+1]))
        return 1;
    else
        return 0;
}

int scan(int size,int x,int y,int arr[n][m]){
    int i,j;
    int tmp=0;
    for(i=y;i<y+size;i++){
        for(j=x;j<x+size;j++){
            if(arr[i][j] == 1)
                tmp++;
        }
    }
    if(tmp == size * size)
        return 1;
    else
        return 0;
}

int main(){
    int i,j,lim,size,flg;
    int max=0;
    scanf("%d %d",&n,&m);
    int arr[n][m];
    int flag[n][m];

    lim = n>m?m:n;

    for(i=0;i<n;i++){
        for(j=0;j<m;j++){
            scanf("%d",&arr[i][j]);
            flag[i][j] = 0;
        }
    }

    for(i=0;i<n;i++){
        for(j=0;j<m;j++){
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
    printf("-------------------------------\n");

    for(i=0;i<n-1;i++){
        for(j=0;j<m-1;j++){
            if(check(i,j,arr))
                flag[i][j] = 1;
            else
                flag[i][j] = 0;
        }
    }

    for(i=0;i<n;i++){
        for(j=0;j<m;j++){
            printf("%d ",flag[i][j]);
        }
        printf("\n");
    }


    for(size=1;size<lim+1;size++){
        flg = 0;
        for(i=0;i<n-size;i++) {
            for (j = 0; j < n - 1; j++) {
                if (scan(size, i, j, flag)) {
                    max = size + 1;
                    flg = 1;
                    break;
                }
            }
            if (flg == 1)
                break;
        }
    }

    printf("%d",max);

    return 0;
}
posted @ 2022-11-18 13:33  Shin404  阅读(39)  评论(0)    收藏  举报