首页 > 其他 > 详细

图像压缩存储

时间:2018-03-27 20:08:47      阅读:203      评论:0      收藏:0      [点我收藏+]

描述:以二维数组表示图像,其值只有0、1两种,寻找两幅图像中最大的相同部分

输入:第一行输入一个n,接下来的2n行输入两个n * n数组,寻找一个最大的m * m子区域,使得两个数组在该子区域完全相同

输出:输出上诉m

样例输入:

              4

              1 1 1 1

              1 1 1 0

              1 1 1 0

              1 1 1 1

              0 1 1 1

              0 1 1 1

              0 1 1 1

              0 1 1 0

样例输出:

              2

#include <iostream>
#define N 100
using namespace std;

bool num(int b[N][N],int i,int j,int t){
    bool flag=true;
    for(int k=i;k<i+t;k++){
        for(int d=j;d<j+t;j++){
            if(b[k][d]==0){
                flag=false;
                break;
            }
        }
    }
    return flag;
}

int main()
{
    int n;
    scanf("%d",&n);
    int a[N][N];
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
        scanf("%d",&a[i][j]);
    int temp;
    for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                scanf("%d",&temp);
                a[i][j]=!(a[i][j]^temp);
                }
    }
    int t=n;
    bool tmp=true;
    while(tmp){
    for(int i=0;i<n-t;i++){
        for(int j=0;j<n-t;j++){
           if(num(a,i,j,t)){
            tmp=false;
            break;
           }
        }
    }
    t--;
    }

    printf("%d",t+1);
    return 0;
}

P.S. 我做是做出来了,但这个的时间复杂度。。。O(n^4),也可以看到,实在太大了,我估计要是跑oj的话是要超时的。。。

 

图像压缩存储

原文:https://www.cnblogs.com/xym4869/p/8658588.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!