Ho dichiarato una matrice bidimensionale larga n e alta m. Devo poter accedere, in un unico ciclo, a tutte le posizioni della matrice nel seguente ordine (l'esempio riguarda una matrice di prova di 7x5; quindi la sequenza va da 1, posizione 0.0, a 35, posizione 6.4):


In questo modo riesco ad arrivare al primo elemento di ogni diagonale (quelli con i numeri in grassetto), e da lì potrei procedere per tutte le altre posizioni della diagonale stessa.
codice:
x=0;
y=0;
while(x<n && y<m) {
	print(x);
	print(y);
	if(y==m-1) x++;
	if(x==0) y++;
}
Quale potrebbe essere l'algoritmo più efficiente per risolvere in modo completo un problema simile?