gpt4 book ai didi

c - 打印中的排列错误?

转载 作者:行者123 更新时间:2023-11-30 19:39:56 25 4
gpt4 key购买 nike

有两个函数,一个函数交换数组中的整数,另一个函数递归获取所有排列而不需要信誉。但它为所有排列打印 0,1。 l 为 0,r 为(数组大小-1)。

数组 a 的输入是 {0,1,1} 进行排列。

void swap(int a[], int first, int second, int r)
{
if (second > r)
{
int tempp = a[first];
a[first] = a[second];
a[second] = tempp;
}

}


void permute(int a[], int l, int r)
{
int i;
if (l == r){
for (int i = 0; i < l; i++)
{
printf("%d",a[i]);
if (i == (r - 1))
{
printf("\n");
}
}
}
else
{
for (i = l; i <= r; i++)
{
swap(a,l, i,r);
permute(a, l+1, r);
swap(a,l, i,r);
}
}
}

最佳答案

条件second > rswap()由于第二个 for 中的条件,将始终为 false permute()中的声明.

删除有害条件并根据需要添加范围检查。

void swap(int a[], int first, int second, int r)
{
if (0 <= first && first <= r && 0 <= second && second <= r) /* range check */
{
int tempp = a[first];
a[first] = a[second];
a[second] = tempp;
}

}

更改for (int i = 0; i < l; i++)for (int i = 0; i <= l; i++)
并更改if (i == (r - 1))if (i == l)如果您想打印数组中的所有元素而不是省略最后一个元素。

关于c - 打印中的排列错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35966986/

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