6개의 댓글이 있습니다.
-
-
4dimensionn -
그럼 이런식으로 하면 안되나요?
if(group==0)return INF;
if(group==1)return minError(idx,n-idx+1);
if(idx==n) return 0;
9년 전 link
-
-
-
4dimensionn -
n에 도달했을때 group이 0이여도 0을 반환해야 한다는게 이해가 잘 가지않습니다. ㅜㅜ
9년 전 link
-
-
-
gomdolfather -
group 이 1인 기저사례를 이미 처리하셨기 때문에
group이 0인 기저사례는 나오지 않습니다.
idx가 n인 경우는 group이 최소 1이상인 경우만 나오게 됩니다.
9년 전 link
-
-
-
gomdolfather -
group이 0인 기저사례를 처리하도록 고친 코드입니다.
int process(int idx, int group){
if(idx==n+1) return 0;
if(group==0)return INF;int& ret = cache[idx][group]; if(ret!=-1)return ret; ret = INF; for(int i=1;i+idx<=n+1;++i){ ret = min(ret,minError(idx,i)+process(idx+i,group-1)); } return ret;
}
9년 전 link
-
-
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
4dimensionn
제가 궁금한 부분은 process함수에서 기저사례를 처리할때
왜 idx==n 이부분을 먼저 처리 해야하는가 입니다.
idx가 n에 도달했다고 하더라도 group이 0이라면 묶을 수 있는 방법이 없으므로 INF를 반환해야 된다고 생각해서 처음에 idx==n을 처리하는부분이 없이 코드를 작성하고 제출하였더니 오답이 나왔습니다.
이 코드는 정답을 받은 코드인데 왜 저 부분에서 group예외를 처리하기전에 idx==n을 먼저 봐야하는지궁금합니다
9년 전