gpt4 book ai didi

c - 生成表中元素的所有组合(语言 C)

转载 作者:太空宇宙 更新时间:2023-11-04 04:19:58 24 4
gpt4 key购买 nike

我有一张整数表

int Table[]={1,2,3,....,28};

我想要这样的组合:

1 2 3 4 5 6 7 ... 28 

然后我会有这个

12 13 14 15 16 17 18 19 23 24 24 ..... 

直到所有可能的组合不重复 (即 12=21)

我想要组合,例如它们是在 excel 列中制作的

char alp[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P'
,'Q','R','S','T','U','V','W','X','Y','Z'};

最佳答案

这个问题可以这样解决:

#include <stdio.h>

void swp(char* array, int index_1, int index_2)
{
char tmp = array[index_1];
array[index_1] = array[index_2];
array[index_2] = tmp;
}

void perm(char* array, int start, int end)
{
if (start == end)
printf("%s\n", array);
else
{
for (int i = start; i <= end; i++)
{
swp(array, start, i);
perm(array, start + 1, end);
swp(array, start, i);
}
}
}

void main(void)
{
char s[] = "Banana";
perm(s, 0, 5);
}

我们基本上从交换第一个元素和其他元素开始,我们使用循环,所以我们在第一次交换中可以做的每一个选择最终都会被计算出来。当我们进行一次迭代时,比如在第一次迭代中将第一个元素与自身交换,我们递归调用 perm() 并继续该决定,在我们从递归返回后我们必须撤消交换,以便未触及的数组可以继续迭代。

关于c - 生成表中元素的所有组合(语言 C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47697038/

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