行列を右循環シフトする効率的な方法を知っている人はいますか? ところで、行列はバイナリですが、非バイナリ行列を解く方法も問題ありません。
現在、行列の行に循環配列を実装し、シフト操作が必要なときはいつでも各行を更新することを考えています。
私が検討していた別の方法は、ベクトルで表される (行列の) 列へのポインターのベクトルを実装し、シフト操作が発生したときにそれらを交換することでした。
例えば
1 2 3
4 5 6
7 8 9
右シフト
3 1 2
6 4 5
9 7 8
マトリックスも下にシフトする必要がある場合、これらすべてのソリューションで別の問題が発生します。両方の操作を効率的に実装することは、完全に私を超えています。
シフトダウン
9 7 8
3 1 2
6 4 5