Problema da minhoca

6 respostas
T

Olá a todos!

Alguem poderia me ajudar com meus erros cometidos no problema abaixo?
Já coloquei no prompt de comando e apareceram os erros mas eu não sei como consertar, pq não sei fazer de outro jeito.
Devo ter cometido muita besteira, mas sou iniciante e realmente tentei o máximo que eu pude…

Se alguém puder ajudar:
(os erros foram indicados na palavra “Scanner” e em “if(1<=N<=100 && 1<=M<=100)”)

import java.util.Scanner;
public class Main {
    
    Scanner entrada = new Scanner (System.in);
    int N = entrada.nextInt();
    int M = entrada.nextInt();
    int [][] mapa = new int [N][M];
    int [] soma_linha = new int [N];
    int [] soma_coluna = new int [M];
    
    
    public void main(String[] args) {      
        
        if(1<=N<=100 && 1<=M<=100){
            for (int i = 0; i<N; i++){
                for (int j = 0; j<M; j++){
                    mapa[i][j] = entrada.nextInt();
                }
            }
            
            for (int i = 0; i<N; i++){
                for (int j = 0; j<M; j++){
                    soma_linha [i] += mapa[i][j];
                }
            }
            
            for (int j = 0; j<M; j++){
                for (int i = 0; i<N; i++){
                    soma_coluna [j] += mapa[i][j];
                }
            }
        }
    }
    
    public int maior (int N, int M){
        int x = soma_linha[0];
        for (int i = 1; i<N; i++){
            if ( soma_linha[i] > x) x = soma_linha[i];
            return x;
        }
        int y = soma_coluna[0];
        for (int j = 1; j<M; j++){
            if ( soma_coluna[j] > y) y = soma_coluna[j];
            return y;
        }
        if (x>y) return x;
        else return y;
        System.out.println (maior(N,M));
    }
}

Obrigada.

6 Respostas

T

Troque

if (1<=N<=100 && 1<=M<=100)

por

if (1 <= N && N <= 100
   &&
    1 <= M && M <= 100)
T

Obrigada.
Consertei isso e outras coisas a mais… agora só tem um problema, eu tenho que imprimir a resposta, que no caso seria x ou y, dependendo de qual for maior. Já tentei encaixar o “System.out.println” em todos os lugares mas sempre dá erro.
Como que eu faço?
Teria que fazer uma chamada ao método “maior”?

rmendes08

Assim , não consegui entender a sua lógica: você recebe as dimensão da sua matriz, depois insere valores nela. Depois você armazena em dois vetores as somas das linhas e depois as somas das colunas. Onde entra o método maior nessa história ?

T

Na verdade vc tem que entender o contexto do problema. Se quiser dar uma olhada: https://br.spoj.pl/problems/MINHOCA/
A saída tem que ser a maior soma possível de cada linha ou de cada coluna.

rodrigo.bossini
public class Main {
   static int n, m;
   
   static int getLinhaMaior(int matriz[][]){
       int linhaMaior = 0,aux = 0;
       for ( int i = 0; i < n; i++){
            for ( int j = 0; j < m; j++){
                aux += matriz[i][j];
            }
            linhaMaior = (aux >linhaMaior ? aux : linhaMaior);
            aux = 0;
        }
        return linhaMaior;
    }
   
   static int getColunaMaior(int matriz[][]){
    
       int colunaMaior = 0,aux = 0;
       for ( int i = 0; i < m; i++){
            for ( int j = 0; j < n; j++){
                aux += matriz[j][i];
            }
            colunaMaior = (aux >colunaMaior ? aux : colunaMaior);
            aux = 0;
        }
        return colunaMaior;
    }
    public static void main(String[] args) {
        
        
        Scanner teclado = new Scanner (System.in);
        n = teclado.nextInt();
        m = teclado.nextInt();
        
        int matriz [][]= new int [n][m];
        
        for ( int i = 0; i < n; i++){
            for ( int j = 0; j < m; j++){
                matriz[i][j]= teclado.nextInt();
            }
        }
       int linha, coluna; 
       linha = getLinhaMaior(matriz);
       coluna = getColunaMaior(matriz);
       
       System.out.println (linha > coluna ? linha : coluna);
        
    }
rmendes08

Ok tatianaf, entendi. O que vc precisa fazer é o seguinte: coloque a chamada a println() da linha 48 no método main(). Além disso vc deve retirar duas instruções return do método maior(), nas linhas 39 e 44.

Criado 5 de dezembro de 2008
Ultima resposta 6 de dez. de 2008
Respostas 6
Participantes 4