圖像壓縮存儲
阿新 • • 發佈:2018-03-27
turn 一行 log 存儲 space str 數組 efi 時間
描述:以二維數組表示圖像,其值只有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的話是要超時的。。。
圖像壓縮存儲