この質問は次の質問に続きます: How to sort a 2D Matrix
前の質問で、OP は行や列などの行列を並べ替える方法を尋ねていました (M[i][j] <= M[i+1][j] および M[i][j] <= M [i][j+1])。私の答えは簡単でした:行がソートされ、列もソートされるように、1D配列のようにソートします。そして、解決策はそれだけではないことに気付きました。
私の質問は次のとおりです。この問題のすべての解決策を提供できるアルゴリズムは何ですか? 明らかな解決策はバックトラッキング アルゴリズムですが、もっとうまくやれると確信しています...
同じアレイのソリューションの例:
0 0 1 2
2 2 3 3
3 5 5 6
6 6 6 6
7 7 9 9
と:
0 2 3 6
0 2 5 6
1 3 5 6
2 3 6 6
7 7 9 9
と:
0 2 3 6
0 2 5 6
1 3 5 7
2 3 6 7
6 6 9 9
と:
0 2 3 6
0 2 5 6
1 3 5 7
2 3 6 9
6 6 7 9
等...