我想做一个递归函数,它会打印出所有具有整数数组重复项的排列,但是数字有一个范围,数组大小的范围也是如此。假设我们有一个数组num[2]
,它有从0-1例如一个范围,它会打印出像如何使用递归打印出C中所有数字范围的排列?
00
01
11
10
如果它是一个简单的排列,我可以用一个简单的置换函数是这样的:
void permute(int *array,int i,int length) {
if (length == i){
printArray(array,length);
return;
}
int j = i;
for (j = i; j < length; j++) {
swap(array+i,array+j);
permute(array,i+1,length);
swap(array+i,array+j);
}
return;
}
void swap(char *x, char *y)
{
char temp;
temp = *x;
*x = *y;
*y = temp;
}
但是我怎样才能使它通过一个数组的范围与数组给定的大小说n大小?
我的问题是不同的另一个在这里,因为我没有一个数组的值是什么,示例代码这样做,但我需要的是帮助打印范围n的所有排列的数组ķ点,所以说,n为3,k为3,那么这将是
000
001
002
003
010
011
etc...
你能共享交换功能吗? – 2015-10-04 14:42:35
void swap(int * x,int * y) { int temp; temp = * x; * x = * y; * y = temp; } – F22lightning
我无法理解“我”变量。那是什么 ? – 2015-10-04 15:14:06