|
안녕하세요? 레조입니다.
파스칼의 수삼각형의 특정 구현방법이 있는지 모르겠지만
단순 구현은 의외로 간단한 원리를 이용하면 될거같습니다.
배열로 수삼각형을 출력할 버퍼를 만들어서 하셔도 될거같고
링크드리스트를 이용해서 무한 파스칼 수삼각형을 만드셔도 될것같습니다.
간단히 배열로 하는부분을 살펴보겠습니다.
A : [ ][ ][ ][ ][ ]
B : [ ][ ][ ][ ][ ]
이렇게 있으면 시작은 1로 하셔야겠죠??(먼저 찍고.. --;)
1
그리고 A 배열에
A : [1][1][ ][ ][ ]
이렇게 시작합니다.
A[0], A[0]+A[1], A[1]
// 배열 크기는 일단 5로 생각해보죠.(배열은 NULL로 초기화 해주세요.)
for( int i = 0; i < 5; i++ )
{
if( i > 0 && A[i+1] != NULL )
{ // 두항의 합 출력
B[i] = A[i-1] + A[i];
}
else
{ // 첫항 또는 끝항 출력
if( A[i+1] != NULL )
{// 끝항
B[i] = A[i-1] + A[i];
B[i+1] = A[i];
B[i+2] = NULL;
break;
}
else // 첫항
B[i] = A[i]; // i = 0 이겠지요?
}
}
A : [1][1][N][ ][ ]
이면
B : [1][2][1][N][ ]
이겠지요?
그럼 다시 A를 초기화하고 A는..
A : [1][3][3][1][N]
이렇게 되겠네요.
위에 적어놓은 for문은 i는 배열의 크기를 의미합니다.
물론 깊이를 처리할때 i와의 관계를 고려하셔야겠네요.
파스칼 수삼각형이 생성되는 부분만 간단히 만들어봤습니다.
충분히 다듬어서 깔끔한 모습으로 다시 구현해 보세요.
링크리스트로 무한 파스칼 삼각형도 도전해 볼만하겠지요?
형 님이 쓰신 글 :
: 배열을 사용하여 밑에 파스칼의 수삼각형을 출력하는 프로그램 짜야는데...
:
: 프로그램 어케 짜야하져?
:
: 1
: 1 1
: 1 2 1
: 1 3 3 1
: 1 4 6 4 1
: 1 5 10 10 5 1
: 1 6 15 20 15 6 1
: 1 7 21 35 35 21 7 1
|