C 언어 재 귀 는 전체 배열 을 실현 한다.
1331 단어 알고리즘
예 를 들 어 ABC 에서 2 개의 데 이 터 를 꺼 내 모든 가능성 을 출력 합 니 다.
AB
AC
BA
BC
CA
CB
우 리 는 ABC 를 번 호 를 매기 고 used [] 라 는 배열 에 저장 합 니 다. 시작 할 때 할당 값 을 0 으로 표시 합 니 다. 어떤 문자 도 꺼 내지 않 았 습 니 다.
어떤 하위 문자 가 추출 되 었 을 때, 우 리 는 그의 아래 표 시 된 used 배열 을 1 로 설정 합 니 다.
두 개의 숫자 만 취하 기 때문에 우 리 는 i 로 i < = 2 시 재 귀 끝 을 표시 합 니 다.
1. 매번 재 귀 함수 에서 우 리 는 전체 문자 의 메 인 문자열 을 옮 겨 다 니 며 used 배열 의 값 이 1 인지 판단 해 야 합 니 다. 1 이면 이 문자 가 이미 사용 되 었 음 을 증명 하고 다음 문 자 를 꺼 내 서 usd 배열 의 값 이 0 일 때 까지 하위 문자열 에 넣 으 려 고 합 니 다.
2. 이때 하위 문자열 에 이미 문자 가 있 습 니 다. 이 문 자 는 이미 사용 되 었 음 을 표시 합 니 다. 재 귀적 으로 자신 을 호출 합 니 다. 재 귀적 함수 가 돌아 오 면 이 문자열 이 답 을 찾 았 고 출력 되 었 음 을 증명 합 니 다. 다음 에 사용 하지 않 은 문 자 를 배치 합 니 다.
3. 종료 조건 i > = 2
코드:
void FullArray(char *source,int sourceLen, int *used, int i,int count,char *dest)
{
int index = 0;//
if(i >= count){
printf("%s
", dest);//count ,
}//
else{
for(index = 0; index < sourceLen; index++){//
if(used[index] == 0){//
dest[i] = source[index];
used[index] = 1;// ,
FullArray(source,sourceLen,used,i+1,count,dest);
// ,
used[index] = 0;// ,
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.