Plega Matriz T34357


Statement
 

pdf   zip   main.cc

thehtml

Sea M una matriz cuadrada 2N × 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,D, el plegado hace que la parte superior (A,B) se superponga con la parte inferior (C,D), y el segundo plegado hace que la parte de la derecha (B,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 × 2N a una matriz N × 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 1 se superponen, las que tienen el número 2 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: m una matriz 2N × 2N de enteros.

POST: r es una matriz N × N en la que en cada posición tiene la suma de los elementos de m superpuestos por el plegado de m.

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 × 2N.

Salida

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

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++