|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
[C++] verificare matrice con cornici decrescenti
Ho un problema col seguente esercizio:
Data una matrice NxN di numeri interi positivi, si dice che ha le “cornici decrescenti” se per ogni cornice, a partire da quella più esterna, ogni elemento è strettamente maggiore di ogni elemento di quella immediatamente più interna. ESEMPIO: la matrice illustrata, nella quale, a beneficio del lettore, sono state evidenziate le cornici concentriche, non gode della proprietà su illustrata: infatti la seconda cornice contiene due elementi (quelli di valore 3 e 4, sottolineati in figura), che non sono più piccoli di ogni elemento della prima cornice. Anche la terza cornice viola la proprietà: l’unico elemento che ne fa parte, il 7, sottolineato in figura, non è più piccolo di ogni elemento della seconda cornice. Si scriva in C++ una funzione che, ricevuta una matrice di numeri interi positivi, verifichi se questa ha le cornici decrescenti. Codice:
3 3 3 3 3 3 2 2 2 3 8 3 7 2 3 3 2 2 4 3 3 3 3 3 3 Ho pensato di trovare il massimo della cornice M[0][j], M[j][0], M[n][j], M[j][n] e di confrontarlo col massimo di M[1][j-2], M[j-2][1], M[n-1][j-2], M[j-2][n-1]... ecc... cioè trovo il max della cornice piu' esterna e lo confronto col max della cornice successivamente piu' interna.. e cosi via fino ad arrivare al 7 dell'esempio.. L'approccio è corretto? Finora sono riuscito a scrivere questo codice e non riesco ad andare avanti..: Codice:
#include <iostream>
using namespace std;
const int n=5;
void cornicidecresc(int M[][n], int n);
int main(){
int M[n][n]={{3,3,3,3,3},
{3,2,2,2,3},
{8,3,7,2,3},
{3,2,2,4,3},
{3,3,3,3,3}};
cornicidecresc(M,n);
system("pause");
return 0;
}
void cornicidecresc(int M[n][n], int n){
int max=M[0][0];
for(int j=0; j<n; j++){
//cout<<M[0][j]<<endl;
if(M[0][j] > max)
max=M[0][j];
}
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
up
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:48.




















