2016-09-15 23 views
3

次のような行の最初の番号を見つける必要があります:(http://puu.sh/rbVEJ/10a2086c82.png)。私はrowStart(6)だけで動くようにした。他には何もない。誰も助けることができますか?特定の行の中で最小の番号を見つける方法を教えてください。

class ShelfRows{ 

    public static void main (String[] args){ 
    rowStart(6); // ans = 16 
    rowStart(10); // ans = 46 

} 

    public static int rowStart(int row){ 
    int n = row - 1; 
    if(n == 0) return 1; 
    return n*2 + rowStart(n); 

    } 
} 

答えて

1

行開始番号は、以下のすべての行における正方形のカウントです。彼らは三角形で編成されていることを容易に見ることができます。三角形で取られるスペースは、四角形で取られるスペースの半分です。あなたの例の正確な式は次のとおりです。

public static int rowStart(int row){ 
    return (row * (row - 1))/2; 
} 

row - 1rowは対角の正方形を考慮するためです。適切な三角形を作成するために「分割」する代わりに、平滑な三角形にrow/2の四角形を追加します。 (それが理解されることを願って... ...)。

0

三角形の数字について読む。

smallest_in_n-th_row = n*(n-1)+1 
関連する問題