선물전달

https://www.acmicpc.net/problem/1947

풀이

  • 완전 순열의 개념을 알아야함

      완전 순열 : n명의 사람이 자신의 모자를 벗어두었다가, 
    

    ​ 다시 쓰는데 모든 사람이 자기의 것이 아닌 모자를 쓰는 경우의 수

  • d[i]

      i 명이 선물을 나누는 경우의 수
    
  • a1 a2 a4 a4 …. aj … ai

  • aj가 i 선물을, ai가 j 선물을 가지는 경우

      나머지 i-2 명이 선물을 나눠 가지면 된다 => d[i-2]
    

    ​ 그리고 aj는 ai를 제외한 명 수중 한 명 이므로 i-1

  • aj가 i 선물을 가지고, ai가 j 선물으 가지지 않는 경우

      aj를 제외한 나머지 i-1명이 선물을 나눠 가지면 된다. => d[i-1]
    

    ​ 그리고 aj는 ai를 제외한 명 수중 한 명 이므로 i-1

  • 그런데, 계속해서 런타임 에러가 발생했음

    • 문제
        d[2]를 초기화할 때, 반복문 안에서 조건을 걸어서 하지 않고,
      
      ​ 반복문 밖에서 초기화하면 런타임 에러가 뜸.
    • 해결
        반복문 안에서 초기화
      

Comments