인프런 커뮤니티 질문&답변

Jeahoon Chung님의 프로필 이미지
Jeahoon Chung

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

[교안 질문]재귀를 이용한 순열

작성

·

267

0

쌤. 위의 함수에서 r 파라미터를 사용하는 의미가 무엇인지 궁금합니다.

아래와 같이 r을 생략하고 n으로 대체해도 같은 결과를 얻을 수 있어 보여서요.

 


void makePermutation(int n, int depth){

if(n == depth){

printV(v);

return;

}

for(int i = depth; i < n; i++){

swap(v[i], v[depth]);

makePermutation(n,depth+1);

swap(v[i], v[depth]);

}

return;

}

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 JUNG님 ㅎㅎ

R은요

nPr에서의 r입니다. n개중에 순서와 관계있이 r개를 뽑는다는 의미입니다. 그렇기 때문에 꼭 r을 넣어주셔야 합니다.

제가 예시로 든 코드는요.

int main(){ 
    for(int i = 0; i < 3; i++)v.push_back(a[i]); 
    makePermutation(3, 3, 0); 
    return 0; 
} 

n과 r이 같죠?

그래서 이부분은 같기 때문에 문제가 없지만 다른 문제들은 다를 수 있기 때문에 꼭 넣어주셔야 합니다.

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

Jeahoon Chung님의 프로필 이미지
Jeahoon Chung

작성한 질문수

질문하기