Sorgete
codice:
package matrix;

import java.util.Arrays;

public class Matrix {

    public static void main(String[] args) throws Exception {
        String mat[][] = {
            {"AA", "Aa", "aa"},
            {"BB", "Bb", "bb"},
            {"CC", "Cc", "cc"}
        };

        int com[] = new int[mat.length];

        for (int i = com.length - 1; i >= 0; ) {
            System.out.println(Arrays.toString(com));

            if (com[i] < 2) {
                com[i]++;
            } else {
                while (com[i] == 2) {
                    com[i] = 0;
                    i--;
                    if (i < 0) {
                        break;
                    }
                    if (com[i] < 2) {
                        com[i]++;
                        i = com.length - 1;
                    }
                }
            }
        }
    }
}
Output
codice:
[0, 0, 0]
[0, 0, 1]
[0, 0, 2]
[0, 1, 0]
[0, 1, 1]
[0, 1, 2]
[0, 2, 0]
[0, 2, 1]
[0, 2, 2]
[1, 0, 0]
[1, 0, 1]
[1, 0, 2]
[1, 1, 0]
[1, 1, 1]
[1, 1, 2]
[1, 2, 0]
[1, 2, 1]
[1, 2, 2]
[2, 0, 0]
[2, 0, 1]
[2, 0, 2]
[2, 1, 0]
[2, 1, 1]
[2, 1, 2]
[2, 2, 0]
[2, 2, 1]
[2, 2, 2]
usando gli indici generati accedo a mat e ho fatto!