問題は次のとおりです。次のような行列が与えられます
入力:
1 1 1
1 1 1
1 1 1
各ステップで、同じ行または列に 2 つの 1 がない 1 と 0 の「2 番目の」行列を見つける必要があります。次に、元の行列から 2 番目の行列を引きます。すべてが 0 の行列が得られるまで、このプロセスを繰り返します。さらに、可能な限り少ない数のステップを実行する必要があります。
すべての「秒」行列を O(n) 時間で出力する必要があります。上記の例では、次の 3 つの行列を順番に減算することで、3 つの手順で null 行列を取得できます。
期待される出力:
1 0 0
0 1 0
0 0 1
0 0 1
1 0 0
0 1 0
0 1 0
0 0 1
1 0 0
最初の最大値を見つけ、その値のインデックスに基づいて 2 番目の行列を作成する試みをコーディングしました。しかし、上記の入力に対して、4 つの出力行列が得られますが、これは間違っています。
私の出力:
1 0 0
0 1 0
0 0 1
0 1 0
1 0 0
0 0 0
0 0 1
0 0 0
1 0 0
0 0 0
0 0 1
0 1 0
私のソリューションはほとんどのテスト ケースで機能しますが、上記のテスト ケースでは失敗します。続行する方法について誰かが私にいくつかの指針を与えることができますか、または最適性を保証するアルゴリズムを見つけることができますか?
動作するテストケース:
入力:
0 2 1
0 0 0
3 0 0
出力
0 1 0
0 0 0
1 0 0
0 1 0
0 0 0
1 0 0
0 0 1
0 0 0
1 0 0