Thursday, October 20, 2011

Solución a 2070 - Simple Encryption [ACM-ICPC]

Solución a 2070 - Simple Encryption [ACM-ICPC]
El enunciado esta en el siguiente link enunciado

import java.util.Scanner;

/**
 * 2070 - Simple Encryption [ACM-ICPC]
 * 
 * @author BreakDark
 * @version 1.0 beta
 */
// ACEPTADO!!! xD
public class Main {
 public static void main(String[] args) {
  Scanner Lee; // para leer los datosd e entrada
  byte numCol; // numero de columnas
  int numFil; // numero de filas
  String cadena; // cadena a desencriptar
  char[][] mat; // matriz de caracteres
  int i, j; // para los bucles

  // AQUI INICIA EL PROGRAMA
  Lee = new Scanner(System.in);
  numCol = Lee.nextByte();
  while(numCol != 0){
   cadena = Lee.next();
   numFil = cadena.length() / numCol;
   mat = new char[numFil][numCol];
   // llenamos la matriz
   j = 0;
   for(i = 0; i < numFil; i++){
    mat[i] = cadena.substring(j, j + numCol).toCharArray();
    j += numCol;
   }
   // mostramos la matriz
   mostrarMatriz(mat);
   numCol = Lee.nextByte();
  }
 }
 /** Procedimiento que evalua la matriz y muestra el resultado */
 private static void mostrarMatriz(char[][] mat) {
  int numFil = mat.length;
  int numCol = mat[0].length;
  int i, j, k;
  i = 0;
  j = 0;
  k = 1;
  while(k <= numFil + numCol - 1){
   System.out.print(mat[i][j]);
   i++;
   j--;
   if(j < 0 || i >= numFil){
    if(k < numCol){
     j = k;
     i = 0;
    }
    else{
     j = numCol - 1;
     i = k - numCol + 1;
    }
    k++;
   }
  }
  System.out.println();
 }
}

No comments: