2016-09-15 4 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 
관련 문제