Plega Matriz T34357


Statement
 

pdf   zip   main.cc

Sea MM una matriz cuadrada 2N×2N2N \times 2N. El plegado de una matriz consiste en plegar la matriz de enteros primero por la línea horizontal que divide la matriz, y después por la línea vertical.

Por ejemplo, sea la siguiente matriz con cuatro cuadrantes A,B,C,DA,B,C,D, el plegado hace que la parte superior (A,BA,B) se superponga con la parte inferior (C,DC,D), y el segundo plegado hace que la parte de la derecha (B,DB,D) se superponga con la de la izquierda (A,C).

           =============        =============      ===========
           |     |     |        |     |     |      |         |                
           |  A  |  B  |   ==>  | A,C | B,D |  ==> | A,B,C,D |
           |     |     |        |     |     |      |         |        
plego -->  -------------        -------------      -----------     
           |     |     |              ^
           |  C  |  D  |              |
           |     |     |              |
           =============            plego

Fíjese que en este caso, la matriz pasa de ser de 2N×2N2N \times 2N a una matriz N×NN \times N en la que cada posición tiene 4 números de la matriz original superpuestos.

El siguiente ejemplo muestra qué posiciones se superponen con otras según su número. Esto significa que todas las cuatro posiciones que tienen el número 11 se superponen, las que tienen el número 22 también, etc.

                          <---- 2N ------>
                          ################  ^
                          # 1  2  | 2  1 #  |
                          # 3  4  | 4  3 #  |
                          #--------------#  2N
                          # 3  4  | 4  3 #  |
                          # 1  2  | 2  1 #  |
                          ################  v

Es necesario implementar la acción void plegaMatriu(const Matriu& m, Matriu& r) con la siguiente especificación:

PRE: mm una matriz 2N×2N2N \times 2N de enteros.

POST: rr es una matriz N×NN \times N en la que en cada posición tiene la suma de los elementos de mm superpuestos por el plegado de mm.

Observación

IMPORTANTE: Sólo hay que enviar la acción que se pide, y quizás otras acciones y funciones necesarias. Hay que mantener, sin embargo, las definiciones de tipos y los #includes.

Entrada

Una matriz 2N×2N2N \times 2N.

Salida

Una matriz N×NN \times N en la que en cada posición tiene la suma de los elementos de mm superpuestos por el plegado de mm.

Sample session
ENTRADA 1:
4
1  2  2  1
3  4  4  3
3  4  4  3
1  2  2  1

SORTIDA 1:
4 8
12 16


ENTRADA 2:
8
1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2
1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2
1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2
1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2

SORTIDA 2:
6 6 6 6
6 6 6 6
6 6 6 6
6 6 6 6


ENTRADA 3:
2
1  3
2  4

SORTIDA 3:
10
Information
Author
PRO1
Language
Spanish
Translator
Original language
Catalan
Other languages
Catalan English
Official solutions
C++
User solutions
C++