Programozás‎ > ‎Feladatok‎ > ‎Képátló‎ > ‎Megoldás‎ > ‎

ep_kepatlo.java

Letöltés: ep_kepatlo.java

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

class Kep{
    int N;
    char pixel[][];
    int[][] T,S,O;
    
    public Kep(int db, BufferedReader be) throws IOException{
        N = db;
        pixel = new char[N][N];
        
        T = new int[N][N];
        S = new int[N][N];
        O = new int[N][N];
        
        
        for(int i=0; i<N; i++){
            String sor = be.readLine();
            for(int j=0; j<N; j++){
                pixel[i][j] = sor.charAt(j);
            }
        }
        
        for(int i = 0; i < N; i++) {
            T[i][N-1] = 0;
            S[i][N-1] = 0;
        }
        
        for(int j = 0; j < N; j++) {
            T[N-1][j] = 0;
            O[N-1][j] = 0;
        }
        
        S[N-1][N-1] = 0;
        O[N-1][N-1] = 0;
        
        for(int i = N-1; i >=0; i--){
            for(int j = N-2; j >= 0; j--){              
                if(pixel[i][j+1]=='0') 
                    S[i][j] = S[i][j+1]+1; 
                else 
                    S[i][j] = S[i][j+1];
            }
        }
        
        for(int i = N-2; i >=0; i--){
            for(int j = N-1; j >= 0; j--){
                if(pixel[i+1][j]=='1') 
                    O[i][j] = O[i+1][j]+1; 
                else 
                    O[i][j] = O[i+1][j];
                
            }
        }
    }
    
    public int megoldas(){
        for(int i = N-2; i >= 0; i--){
            for(int j = N-2; j >= 0; j--){
                int A = T[i][j+1]+O[i][j];
                int B = T[i+1][j]+S[i][j];
                if(A<B)
                    T[i][j] = A;
                else
                    T[i][j] = B;
            }
        }
        return T[0][0];
    }
}

class kepatlo{
    public static void main(String args[]) throws IOException{
        
        BufferedReader be = new BufferedReader(new FileReader("atlo.be5"));
        int N = Integer.parseInt(be.readLine());
        
        Kep K = new Kep(N, be);
        System.out.println(K.megoldas());
    }
}