[m][m][m]....n 回のオーダーの N 次元行列が与えられます。値 position には、そのインデックスの値の合計が含まれます。たとえば、6x6 行列A
では、position の値はA[3][4]
7 になります。
x より大きい要素のカウントの総数を見つける必要があります。2 次元行列の場合、次のアプローチがあります。
1 つのインデックスがわかっている場合は、制約[i][j] {i+j = x}
を使用するだけで対角線を作成し、常に の範囲内にあります。たとえば
、値 A[3][4] の 2 次元行列 A[6][6] (x = 7)、対角線は次の方法で作成できます。[i++][j--]
[i--][j++]
i
j
0
m.
A[1][6] -> A[2][5] -> A[3][4] -> A[4][3] -> A[5][2] -> A[6][2]
ここでは、対角線を含む対角線の下の要素を数えるという別の問題に問題を変換しました。行列の次数を費やす代わりに、O(m)
複雑さ
を簡単に数えることができます。しかし、N 次元の行列を考えると、どのようにそれを行うのでしょうか。N 次元の行列では、その場所のインデックスがわかっている場合、インデックスの合計は時間と言えます。次に、その条件を満たす複数の対角線が存在する可能性があります。たとえば、次のいずれかをインクリメントできます。O(m^2)
2
x
A[i1][i2][i3][i4]....[in]
i1--
{i2, i3, i4....in}
したがって、上記の 2 次元行列に対するアプローチは、ここでは役に立たなくなります... 2 つの変数 i1 と i2 しか存在しないためです。解決策を見つけるのを手伝ってください