Manca qualche test.Originariamente inviato da John360
scusami, comunque intendo miglioramenti visivi... non so se mi spiego, l'algoritmo è giusto però mi sembra scritto male....
A me è venuta questa soluzione:
codice:public static boolean isQM(int M[][]){ if( M.length != M[0].length ) return false; int n = M.length, m = M[0].length; int c = 0, diagpsum = 0, diagssum = 0; // test righe e colonne for(int i = 0; i < n; i++) { int rowsum = 0, colsum = 0; for(int j = 0; j < m; j++) { rowsum += M[i][j]; colsum += M[j][i]; diagpsum += (i == j) ? M[i][j] : 0; } c = (i == 0) ? rowsum : c; if ( c != rowsum || c != colsum ) return false; } // test diagonale principale if ( c != diagpsum ) return false; // test diagonale secondaria int row = 0, col = m - 1; while( row - col < m ) diagssum += M[row++][col--]; return c == diagssum; }

Rispondi quotando