2016-09-15 25 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 - 1 VS row是考慮到對角正方形。而不是「分裂」(創建一個適當的三角形),他們添加row/2正方形到光滑的三角形。 (希望可以理解......)。

0

閱讀關於三角形數字。

smallest_in_n-th_row = n*(n-1)+1 
相關問題