gpt4 book ai didi

c - 如何在递归算法中将结果添加到数组中?

转载 作者:行者123 更新时间:2023-11-30 14:23:50 25 4
gpt4 key购买 nike

我正在使用递归算法列出数组 p = {1,2,3} 的元素的所有可能排列。以下是我正在使用的简单递归实现:

void swap(int x, int y){
int temp = array[x];
array[x]=array[y];
array[y]=temp;
return;
}

void printArray(int size){
int i;

for (i=0;i<size;i++)
printf("%d ", array[i]);

printf("\n");
return;
}

void permute(int k,int size){
int i;

if (k==0)
printArray(size);
else{
for (i=k-1;i>=0;i--){
swap(i,k-1);
permute(k-1,size);
swap(i,k-1);
}
}
return;
}

问题是我不想打印它们,而是想将每个排列添加到二维数组中。目前,我正在将排列打印到文件中,然后将其读取到二维数组,但我认为应该有更好的方法来做到这一点。

最佳答案

将它们声明为全局:

int **resultArray;
resultArray = malloc( (n!) * sizeof(int *)); // n! : factorial of n
for(i=0; i<(n!); i++)
resultArray[i] = malloc(size * sizeof(int));
int index = 0;

填充二维数组:

void addToArray(int size){
int i;
for(i=0 ; i<size ; i++)
resultArray[index][i] = array[i];
index++;
}

关于c - 如何在递归算法中将结果添加到数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12479075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com