码迷,mamicode.com
首页 > 其他好文 > 详细

图像压缩存储

时间:2018-03-27 21:02:55      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:name   for   post   ret   接下来   两种   while   复杂度   printf   

描述:以二维数组表示图像,其值只有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的话是要超时的。。。

 

图像压缩存储

标签:name   for   post   ret   接下来   两种   while   复杂度   printf   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!