我一直在試圖完成我的任務的這一部分,在過去的一天無濟於事,需要一些幫助或指導來幫助理解問題。C遞歸排列
到目前爲止,我有這樣的:
swap(int A, int B){
int temp;
temp = A;
A = B;
B = temp;
}
int max_array(int array[], int arraySize)
{
int i, max=-32000;
for (i=0; i<arraySize; i++)
{
if (array[i]>max)
{
max=array[i];
}
}
printf("%d \n Max array: ", max)
return(max);
}
int nextPermutation(int array[], int arraySize){
int i;
n = max_array(array, arraySize);
if (int i; n == array[i] && i > 1; i++){
swap(array[i], array[i-1]);
}
else if(int i; n == array[i]; i++){
}
}
void main(){
int intArray[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
//int intArray[10] = {1, 10, 3, 9, 8, 6, 7, 2, 4, 5};
nextPermutation(intArray, 10);
int i = 0;
for(i = 0; i < 10; i++){
printf("%d ",intArray[i]);
}
}
但是,我竭力要理解這個問題是 「如果A1,...,一個是任意排列(其中,A1,..., a是可能不同順序的數字1,2,...,n),那麼下面的過程產生「下一個」置換: (i)如果數組的最大元素不是(ii)如果最大元素爲0,1,2,則可以得到其中i> 1的第一個元素,然後產生你需要交換ai和ai-1所需要的「下一個」置換 (n = a1),然後到 產生排列(a1,...,an) 的「下一個」置換,首先找到(n-1)的「下一個」置換, ) - 元素置換(a2,...,一個 ),然後將a1追加到如此獲得的(n-1)個元素數組的末尾。「
因此它需要排列每一個可能的組合數組1,2,3,4,5,6,7,8,9,10,然後在到達此點時結束「(n,...,2,1)。這是 不具有「下一個」置換給它的唯一的排列「。
和的函數int‘nextPermutation(int數組[],INT ARRAYSIZE){’需要保持不變。
任何幫助或建議將是極好的!
:交換功能不會做任何事情。 – 2013-04-07 04:30:05
交換既不返回一個值,也不參照傳遞。修正第一個 – karthikr 2013-04-07 04:31:46
'main'也應該返回'int'。 – 2013-04-07 04:32:34