Ajuda na resoluçao do exercicio

2 respostas
I

Galera alguem poderia me ajudar com este exercicio pois nao estou consseguindo intender ele ao certo.

Exercicios: [url]http://www.urionlinejudge.com.br/judge/problems/view/1435[/url]

meu codigo

import java.util.Scanner;

public class Main{

	public static void main(String[] args){
	
		Scanner entradaTeclado = new Scanner(System.in);
		int num = entradaTeclado.nextInt();//2
		int[][] vetor = new int[num][num];
		
		while(num != 0){
			vetor = new int[num][num];
			for(int cont = 0; cont < vetor.length; cont++){//2
				for(int i = 0; i < vetor[cont].length; i++){//0<2
					if(cont == 0 || cont == vetor.length-1){
						if(i == 0){
							System.out.printf("%d", 1);
							continue;
						}
						if(i == vetor.length-1){
							System.out.printf("%3d\n", 1);
						}else{
							System.out.printf("%3d", 1);
						}
						continue;
					}
					if(i == 0 || i == vetor.length-1){
						if(i == 0){
							System.out.printf("%d", 1);
							continue;
						}
						if(i == vetor.length-1){
							System.out.printf("%3d\n", 1);
						}else{
							System.out.printf("%3d", 1);
						}
					}else{
						System.out.printf("%3d", 2);
					}
				}
			}
			num = entradaTeclado.nextInt();
		}
	
	}

}

2 Respostas

Yelden

Ahaha, a famosa matriz cebola, pesadelo dos cursos de estrutura de dados, eu mesmo na época gastei umas 15 horas nesse exercicio.

Uma dica: o for vai controlar a mudança de camadas, sempre que houver mudança de camadas, há incremento.

Você não pode utilizar valores estáticos, como “1” ou “2”, pois a matriz é dinâmica, você precisa pensar assim: A cada vez que mudar de camada, uma váriavel (que começa valendo 1, já que é a camada mais exterior) incrementa.

Você também pode utilizar 3 for, Um para contar as colunas, outro para contar as linhas, e outro para contar as camadas (aqui que há o incremento)

A coluna começa do 0 e vai até N.length-1, e também pode começar do N.length-1 e ir até o 0, mesmo caso para as linhas

Espero ter ajudado, vale MUITO a pena gastar horas e neurônios nesse exercicio, acredite!

Luiz_Augusto_Prado
ivanGuima:
Galera alguem poderia me ajudar com este exercicio pois nao estou consseguindo intender ele ao certo.

Exercicios: [url]http://www.urionlinejudge.com.br/judge/problems/view/1435[/url]

meu codigo

import java.util.Scanner;

public class Main{

	public static void main(String[] args){
	
		Scanner entradaTeclado = new Scanner(System.in);
		int num = entradaTeclado.nextInt();//2
		int[][] vetor = new int[num][num];
		
		while(num != 0){
			vetor = new int[num][num];
			for(int cont = 0; cont < vetor.length; cont++){//2
				for(int i = 0; i < vetor[cont].length; i++){//0<2
					if(cont == 0 || cont == vetor.length-1){
						if(i == 0){
							System.out.printf("%d", 1);
							continue;
						}
						if(i == vetor.length-1){
							System.out.printf("%3d\n", 1);
						}else{
							System.out.printf("%3d", 1);
						}
						continue;
					}
					if(i == 0 || i == vetor.length-1){
						if(i == 0){
							System.out.printf("%d", 1);
							continue;
						}
						if(i == vetor.length-1){
							System.out.printf("%3d\n", 1);
						}else{
							System.out.printf("%3d", 1);
						}
					}else{
						System.out.printf("%3d", 2);
					}
				}
			}
			num = entradaTeclado.nextInt();
		}
	
	}

}

quebre o problema em partes.
dica:
tenta primeiro imprimir uma linha +- assim:

exemplo com o numero 8:
1 2 3 4 4 3 2 1

para o 7:
1 2 3 4 3 2 1

tá vendo que algo 'diferente' acontece quando o numero alterna entre par e ímpar?
depois que conseguir imprimir essa linha, o exercício vai ficar mais fácil.

Criado 7 de agosto de 2013
Ultima resposta 8 de ago. de 2013
Respostas 2
Participantes 3