2017-03-20 12 views
0

私は脳のティーザーの問題に取り組んでいますが、私は正しい解決策を持っていますが、それがどのように機能するかを明確にしたいと思います。より具体的には、ここで必要とされる領域の平方根はなぜですか?そして、w == 0を法とする領域まで毎回どのような値を減算しますか?領域の平方根を使った幾何学的原理はありますか?Construct Rectangleアルゴリズムはどのように機能しますか?

ソリューション:

public int[] constructRectangle(int area) { 
    int w = (int)Math.sqrt(area); 
    while (area%w!=0) w--; 
    return new int[]{area/w, w}; 
} 

問題:

RectangleはWeb開発者のために

をリストに追加構築し、Webページのサイズを設計する方法を知っていることは非常に重要です。だから、特定の長方形のWebページの面積を考えると、今ではあなたの仕事は、その長さLと長方形のWebページを、設計することである幅Wは、次の要件を満たす:

  1. あなたは必見設計された長方形のウェブページの領域を指定されたターゲット領域に等しい。

  2. 幅WはL> = W.

  3. 長さLと幅Wとの差はできるだけ小さくなければならないことを意味する、長さLよりも大きくすべきではありません。

あなたが順番に設計したウェブページの長さLと幅Wを出力する必要があります。

例:

入力:4

出力:[2,2]

説明:対象領域が4であり、それを構成するすべての可能な方法である[1,4] 、[2,2]、[4,1]である。 しかし、要件2によれば、[1,4]は違法です。要件3によれば、[4,1]は[2,2]に比べて最適ではない。だから、長さLは2であり、幅Wは、それが残りareaに分かれるまでの整数area

while (area%w!=0) w--; 

のSQRTデクリメントwに最も近いwを探す2

+0

矩形の面積が必ずしも完全な正方形であるとは限りません。 –

答えて

0
int w = (int)Math.sqrt(area); 

あります。

return new int[]{area/w, w}; 

wなし残りareaに分割した場合、高さはarea/wなければなりません。

areaの平方根から始めると、長方形の高さと幅ができるだけ近くなることを意味します。

もちろん、面積が素数の場合は、w = 1 h = areaとなります。

関連する問題