leetcode 알고리즘 연습: 계단 오 르 기

제목:
     
        。   n         。

       1   2    。                 ?

  :   n       。

   1:

  : 2
  : 2
  :            。
1.  1   + 1  
2.  2  
   2:

  : 3
  : 3
  :            。
1.  1   + 1   + 1  
2.  1   + 2  
3.  2   + 1  

사고: 이 문 제 는 일정한 조합 수 규칙 이 있다. 즉, n 은 짝수 이 고 종 수 는 C (0, n) + C (1, n - 1) + C (2, n - 2) +... + C (n / 2, n / 2) 이다.n 은 홀수 이 고 종 수 = C (0, n) + C (1, n - 1) + C (2, n - 2) +... + C (n / 2, n / 2 + 1);코드:
int climbStairs(int n){
    if(n==1){
        return 1;
    }
    double a,b=2,c=n-2,d=0;
    if(n%2!=0)
        a=n/2+1;
    else
        a=n/2;
    while(c>=a){
      double e=1,f=c,x=1,y=c;
        for(int i=1;i<b;i++){
            x=x+1;
            e=e*x;
            y=y-1;
            f=f*y;
        }
        d=d+(f/e);
        c--;
        b++;
    }
    d=d+n;
    return d;
}

leetcode 표준 답안:
int climbStairs(int n){
    int i,m[3];
    if(n==1)
        return 1;
    if(n==2)
        return 2;
    m[0]=0;m[1]=1;m[2]=2;
    for(i=3;i<=n;i++)
    {
        m[0]=m[2];
        m[2]=m[1]+m[2];
        m[1]=m[0];
    }
    return m[2];
}

좋은 웹페이지 즐겨찾기