블루 브릿지 컵 훈련 알고리즘 너 한테-35 패스 게임

알고리즘은 게임을 통과하는 열차  

시간 제한 : 메모리 제한을 1.0s : 256.0MB를

 

  [문제 설명]
  체육 수업을 교사 샤오 남자는 종종 함께 게임을하는 학생들을했다 때. 이 시간, 교사는 학생들이 함께 게임을 통과으로한다.
  n은 원 서 동급생이 교사가 자정에 공을 시작 휘슬을 불면 공을 들고 학생 중 하나가, 각 학생에서 자신의 두 학생의 주위에 공을 전달할 수 있습니다 : 게임의 규칙이있다 A (오른쪽 또는 왼쪽), 자정 교사는 당신에게 성능을 제공하기 위해, 패자는 학생들에게 확산되지 않은 공을 들고 휘파람 다시 전달 중지,이 시간을 날려 버릴 수 있습니다.
  샤오 남자의 손이 볼을 통과 m 시간 이후, 샤오 남자의 손에 돌려 통과하기 시작에서 다른 방법 패스를 만들기 위해 얼마나 많은 : 스마트 샤오 남자는 흥미로운 질문을 제기했다. 단지 두 방법하는 경우, 조성물의 순서에있어서의 볼 캐치 수용 학생의 시퀀스가 다른 경우 두 가지 방법은 다른 방법을 전달하는 것으로 간주된다. 예를 들어 세 학생은 제 1, 제 2, 제 3 및 제 1있다 작은 매우 손으로 1-> 2-> 3-> 1, 1-> 3 위로 세 번 샤오 사람의 볼을 가정 -> 2-> 1 개의 종류의 총.

 

입력 형식
  공통 라인, 2 개 공간은 정수 N, m에 의해 분리되어있다 (3 <= N <= 30.1 <= m <= 30).

 

출력 형식
  총 라인 t는, 질문의 의미에 부합하는 방법의 수를 나타내는 정수가있다.

 

입력 샘플
33

 

샘플 출력
2

 

상기의 데이터 사이즈 합의
  40 %의 데이터를 만족 :. 3 <= N - <= 30.1 <= m <= 20
  데이터 만족 100 % : 3 <= N <= 30.1 <= m <= 30
 

분석 : 세트가 F (I, J)통과하는 나는학생들에게 다음 번 제이재발 관계에 대한 가능한 방법의 수의 끝 지점으로

F (I, J)이 = \ {예} F (I-1, J-1) + F (I-1, J + 1)를 시작 및 \ 텍스트 {경우} 1 <J <N \\ F (I- 1 N) + F (I-1, 2) \ 텍스트 {경우} J = 1 \\ F (I-1, N-1) + F (I-1, 1) \ 텍스트 {경우} J = n \ {단부 경우}

초기 조건은 다음과 같습니다 :

케이스 {} F (1,2) = F (1, N) = 1 \\ F (1, J) = 0 \ {단부 케이스} 시작 \

 

#include <stdio.h>

int main()
{
    int n, m;
    int f[35][35] = { 0 };

    scanf("%d %d", &n, &m);

    f[1][2] = f[1][n] = 1;
    for (int i = 2; i <= m; ++i)
    {
        f[i][1] = f[i-1][n] + f[i-1][2];
        for (int j = 2; j < n; ++j)
            f[i][j] = f[i-1][j-1] + f[i-1][j+1];
        f[i][n] = f[i-1][n-1] + f[i-1][1];
    }

    printf("%d", f[m][1]);

    return 0;
}

 

게시 된 221 개 원래 기사 · 원 찬양 40 ·은 40000 +를 볼

추천

출처blog.csdn.net/liulizhi1996/article/details/104006855