~cpp
#include <stdio.h>
#define MAX 10
void main()
{
int colum, row; // 행과 열
int i,j; // 카운터
int array[MAX][MAX]; // 배열
scanf("%d %d",&colum,&row);
for ( i=1;i<=colum;i++ ) {
for ( j=1;j<=i;j++) {
if ( j==1 || j==i ) {
array[i-1][j-1] = 1;
printf("%d ", array[i-1][j-1]);
}
else {
array[i-1][j-1] = array[i-2][j-2]+array[i-2][j-1];
printf("%d ", array[i-1][j-1]);
}
}
puts("");
}
printf("%d\n", array[colum-1][row-1]);
}
~cpp
def getrow(index):
r = 1
i = 0
while (i<index):
for j in range(r):
i+=1
if i>index: break
r+=1
return r
def getcol(index):
first = 0
for i in range(getrow(index)):
first += i
return index - first + 1
def getindex(row, col):
first = 0
for i in range(row):
first += i
return first + col - 1
def pascal(maxrow):
arr = [ 0 for x in range(maxrow) for y in range(x+1) ]
for i in range(len(arr)):
if ( getcol(i)==1 ): arr[i] = 1
elif ( getcol(i)==getrow(i) ): arr[i] = 1
else:
a = arr[getindex(getrow(i)-1,getcol(i)-1)]
b = arr[getindex(getrow(i)-1,getcol(i))]
arr[i] = a+b
stair = 1
print ' '*(maxrow-stair),
for i in range(len(arr)):
print arr[i],
if ( getcol(i)==getrow(i) ):
stair+=1; print ''; print ' '*(maxrow-stair),
import sys
pascal(int(sys.argv[1:][0]))
최소 배열로 만든 삼각형입니다. 어떤분이 전화로 질문 하셔서 모르겠다고 했는데, 완성해버렸습니다. 필요한 배열공간은 시그마n 이 되는군요. 비쥬얼 스튜디오가 없어서 파이썬으로 만들어봤습니다.(코드가 상당히 지저분하네요-_-) 파이썬을 깔고 pascal.py로 저장한 다음에 명령콘솔창에서 "pascal.py 10"이런식으로 사용.