fdjk2000   2년 전

if(j+arr[i]<=20) dp[i][j+arr[i]]+=1;
if(j-arr[i]>=0) dp[i][j-arr[i]]+=1;

이게아니고왜

if(j+arr[i]<=20) dp[i][j+arr[i]]+=dp[i-1][j];
if(j-arr[i]>=0) dp[i][j-arr[i]]+= dp[i-1][j];

이거인거죠??

i번째에서 4가되는 숫자 횟수를 늘리는거아닌가요??

djm03178   2년 전

dp[i-1][j]는 i-1번째 수까지 계산했을 때 값이 j가 되는 경우의 수를 담고 있습니다.

i-1번째 수까지 계산해서 j가 되었을 때 여기에 arr[i]를 더하면 i번째 수까지 계산했을 때 j+arr[i]가 되고, 이렇게 되는 경우의 수는 dp[i-1][j]와 같습니다. 그래서 이 수를 더해줘야 합니다.

댓글을 작성하려면 로그인해야 합니다.