我想做一個遞歸函數,它會打印出所有具有整數數組重複項的排列,但是數字有一個範圍,數組大小的範圍也是如此。假設我們有一個數組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