5557번 - 1학년
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가되는 숫자 횟수를 늘리는거아닌가요??
dp[i-1][j]는 i-1번째 수까지 계산했을 때 값이 j가 되는 경우의 수를 담고 있습니다.
i-1번째 수까지 계산해서 j가 되었을 때 여기에 arr[i]를 더하면 i번째 수까지 계산했을 때 j+arr[i]가 되고, 이렇게 되는 경우의 수는 dp[i-1][j]와 같습니다. 그래서 이 수를 더해줘야 합니다.
댓글을 작성하려면 로그인해야 합니다.
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가되는 숫자 횟수를 늘리는거아닌가요??