F004A. Les capes de la ceba

image Donada una matriu, tots els elements que es troben a la primera fila, a la primera columna, a l’última fila i a l’última columna, formen la primera capa de la matriu. Igualment, els elements que es troben a la segona fila, a la segona columna, a la penúltima fila i a la penúltima columna (però que no es troben a la primera capa), formen la segona capa. El concepte de capa es generalitza de la mateixa manera per a tots els elements de la matriu.

Per exemple, per a una matriu de 8 files i 9 columnes, el diagrama següent mostra a quina capa es troba cada element de la matriu:

1 1 1 1 1 1 1 1 1
1 2 2 2 2 2 2 2 1
1 2 3 3 3 3 3 2 1
1 2 3 4 4 4 3 2 1
1 2 3 4 4 4 3 2 1
1 2 3 3 3 3 3 2 1
1 2 2 2 2 2 2 2 1
1 1 1 1 1 1 1 1 1

Feu un programa que, donades diferents matrius d’enters, calculi, per a cadascuna d’elles, els valors mínims i màxims de cadascuna de les seves capes. Per exemple, per a la matriu

15 1 92 92 82 15 1 92 92
46 31 13 3 32 46 32 13 13
15 3 32 2 22 16 12 34 14
23 17 33 1 2 23 17 32 21
13 63 56 2 21 13 62 66 4
43 9 8 52 11 43 9 8 64
53 96 6 42 17 63 99 6 14
99 94 5 51 21 99 94 5 51

el mínim i màxim de la primera capa són 1 i 99, el mínim i màxim de la segona capa són 3 i 99, el mínim i màxim de la tercera capa són 2 i 62, i el mínim i màxim de la quarta capa són 1 i 23. Representem aquesta informació amb un vector de parells:

1,99 3,99 2,62 1,23

El programa principal ja se us dóna implementat (no el toqueu!). Utilitzant els tipus

    struct Info {
        int min, max;
    };

    typedef vector<vector<int> > Matriu;

heu d’implementar la funció

    vector<Info> info_capes(const Matriu& mat);

que, donada una matriu rectangular |mat| (amb, com a mínim, una fila i una columna), retorna un vector amb tantes posicions com capes té la matriu, on la posició ii del vector conté els valors mínim i màxim de la capa ii+1 de |mat|.

Informació del problema

Autoria: Professorat de P1

Generació: 2026-01-25T18:12:18.783Z

© Jutge.org, 2006–2026.
https://jutge.org