グリッドが与えられた場合m x n
、そのようなグリッド上にいくつの一意のサブ長方形が存在しますか?
例えば、
1 x 1
グリッドには 1 つのサブ長方形があります。
1 x 2
グリッドには 3 つのサブ長方形があります。
既存のサブ長方形の数を直接計算するために使用できる一般的な式を探しています。
グリッドが与えられた場合m x n
、そのようなグリッド上にいくつの一意のサブ長方形が存在しますか?
例えば、
1 x 1
グリッドには 1 つのサブ長方形があります。
1 x 2
グリッドには 3 つのサブ長方形があります。
既存のサブ長方形の数を直接計算するために使用できる一般的な式を探しています。
答えはm(m+1)n(n+1)/4
です。
長方形は、x 軸と y 軸上の 2 つの射影によって定義されます。
x 軸の射影 : 1 <= a <= b <= m = m(m+1)/2 となるペア (a,b) の数
y軸の同上
@Thomashが提供したのと同じ答えですが、もう少し説明があり、後世に投稿しています:
これを一次元で理解できれば、二次元に移すのは簡単です。
1x5 を見てみましょう:
5 1x1 squares
+4 1x2 squares
+3 1x3 squares
+2 1x4 squares
+1 1x5 squares = 15 squares.
これの公式は簡単です: sum = n(1 + n)/ 2
. 5 の場合、5(1+5)/2 = 15 が必要です。
したがって、答えを得るには、n と m に対してこれを行い、それらを乗算します。
sumN = n(1+n)/2
sumM = m(1+m)/2
totalRectangles = nm(1+n)(1+m)/4
正方形を含む((m+1) m n*(n+1))/4 個の長方形があります [長方形のサブセット]