1
문자의 문자열을 취하고 모든 가능한 조합을 인쇄하는 프로그램을 만들었습니다. 그러나 각 콤보를 화면에 인쇄하는 대신 목록이나 배열에 기록하는 방법이 있습니까? 왜냐하면 나는 그들을 보지 않고 콤보 중 일부를 조작 할 수 있어야하기 때문이다.C - 배열이나 목록의 조합 인쇄
void swap(char *a, char *b){
char tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
void permutation(char *c, int d, int e){
int f;
if(d == e)
printf("%s\n", c);
else{
for(f = d; f <= e; f++){
swap((c + d), (c + f));
permutation(c, d + 1, e);
swap((c + d), (c + f));
}
}
}
int main(){
char wordInput[25];
int len, arrLen, f;
printf("\nEnter text: ");
gets(wordInput);
len = strlen(wordInput);
arrLen = len - 1;
permutation(wordInput, 0, arrLen);
return 0;
}
힌트 : 'k'글자가 길고 순열의 수가 k라고 가정 해 봅시다. = k (k-1) (k-2) ... (3) (2) (1)'그래서 k 크기의 문자열 배열이 필요합니다. 먼저 strlen을 사용하여 길이를 계산 한 다음 malloc을 사용하여 배열을 할당 한 다음 배열을 채우고 원하는 것을 사용하여 순열을 실행합니다 (재귀는 괜찮습니다). 이 힌트를 사용하여 프로그램을 만들려고합니다. 문제가 있으면 더 도움이 될 것입니다 :-) –