~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"이런식으로 사용.