Pascal의 삼각형에서 모든 행의 값은 이전 행의 값의 합입니다. 사용할 수있는 값이없는 경우 하나가 사용됩니다. n [k] = n-1 [k-1] + n-1 [k] Java 표기법 사용. 첫 번째 행은 값 1을 포함합니다.
Pascal의 삼각형은 2 for 루프를 사용하고 첫 번째 요소로 맨 위에서 시작하여 생성됩니다.
import java.util.Collections; import java.util.LinkedList; import java.util.List; public class InterviewPascalTriangle { protected List<List<Integer>> generatePascalTriangle(int nbRows){ // 입력 유효성 검사 if ( nbRows < 0 ) throw new IllegalArgumentException( "행 수는 음수 일 수 없습니다." ); // 반환 할 객체 List<List<Integer>> toReturn = new LinkedList<List<Integer>>(); // 이전 행을 저장하십시오. List<Integer> previousRow = Collections.emptyList(); // 모든 행 처리 for( int i = 0 ; i <= nbRows ; i++ ){ // 현재 행 만들기 List<Integer> currentRow = new LinkedList<Integer>(); toReturn.add( currentRow ); // 이전 값 정의 int previousValue = 0; // 모든 값에 대해 반복 for(int c : previousRow){ currentRow.add( c + previousValue ); // 현재 값을 이전 값으로 설정하십시오. previousValue = c; } // 마지막 값 추가 currentRow.add( 1 ); // 현재 행을 저장하십시오. previousRow = currentRow; } return toReturn; } public static void main(String[] argv) throws Exception { InterviewPascalTriangle t = new InterviewPascalTriangle(); List<List<Integer>> res = t.generatePascalTriangle(7); System.out.println( "결과:" ); String tmp = res.get( res.size() -1 ).toString(); int max = (int) tmp.length(); for(List<Integer> c : res ){ String toDisplay = c.toString(); int padding = ( max - toDisplay.length()) / 2 ; StringBuilder sb = new StringBuilder(); for(int i=0; i < padding; i++){ sb.append( " " ); } sb.append( toDisplay ); System.out.println( sb.toString() ); } } }
결과: [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]
파스칼의 삼각형 행은 0부터 n까지 번호가 매겨집니다. 첫 번째 행에는 값 1 만 포함됩니다.